怎样在delphi中实现控件的拖拽

时间:2023-03-09 05:33:00
怎样在delphi中实现控件的拖拽

下面这2种方法都能实现对控件窗体拖拽

方法1

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,);
end;
 
方法2
  public
    { public declarations }
    posX, posY: Integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
posX := Mouse.CursorPos.X - Form1.Left;
posY := Mouse.CursorPos.Y - Form1.Top;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if Shift =[ssLeft] then
begin
Form1.Left := Mouse.CursorPos.X - posX; // 新的位置
Form1.Top := Mouse.CursorPos.Y - posY;
end;
end;