panel2的parent是panel1,如何对panel1进行拖动?就像拖动窗体那样(20分)

  • 主题发起人 主题发起人 星幻子
  • 开始时间 开始时间

星幻子

Unregistered / Unconfirmed
GUEST, unregistred user!
点中Panel2,拖动Panel1:
procedure TForm1.Panel2MouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
begin
ReleaseCapture;
Panel1.perform(WM_SysCommand, $F012, 0);
end;
点中Panel2,拖动Panel2:
procedure TForm1.Panel2MouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
begin
ReleaseCapture;
Panel2.perform(WM_SysCommand, $F012, 0);
end;
 
任意的拖动窗口

procedure TForm1.Panel1MouseDown(Sender: TObject
Button: TMouseButton;

Shift: TShiftState
X, Y: Integer);

begin

ReleaseCapture;

Perform(WM_SYSCOMMAND,$f012,0);

end;

实际上 ,可以封装一下上面的代码 ,这样以后只要在控件的 MouseMown 中调用下面的函数就可以实现运行的时候拖动和改变控件的大小 :

procedure DragControl(WinControl:TWinControl);

const

SM=$F012;

begin

ReleaseCapture;//释放鼠标捕获
WinControl.Perform(WM_SYSCOMMAND,SM,0);

end;

其中 ,$F012 可以从 $F000 变换到 $F012
 
接受答案了.
 
后退
顶部