在Firemonkey中移动无边框表单

sma*_*871 0 delphi firemonkey delphi-xe3

在VCL表单中我使用WM_SYSCOMMAND,但在firemonkey中它是未声明的.

我测试这段代码:

procedure TForm4.dragPanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
  isDraging := true;
  X0 := X;
  Y0 := Y;
end;

procedure TForm4.dragPanelMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Single);
begin
  if isDraging then
  begin
    Form4.Left := Trunc(Form4.Left + X - X0);
    Form4.Top := Trunc(Form4.Top + Y - Y0);
  end;
end;

procedure TForm4.dragPanelMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
  isDraging := False;
end;
Run Code Online (Sandbox Code Playgroud)

这是有效的,但只是为了缓慢的移动!

如何在Firemonkey中移动表单?

小智 8

使用Form的StartWindowDrag方法更容易.这样它既可以在Windows和MacOS中使用,也可以在一行代码中使用.像这样:

procedure TForm4.dragPanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
    Self.StartWindowDrag;
end;
Run Code Online (Sandbox Code Playgroud)