【发布时间】:2013-03-13 09:49:13
【问题描述】:
在 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;
这可行,但只适用于慢动作!!!
如何在 Firemonkey 中移动表单?
【问题讨论】:
-
你也可以使用
WM_SYSCOMMAND。没定义,定义吧。 -
我如何定义
WM_SYSCOMMAND? -
WM_SYSCOMMAND = $0112msdn.microsoft.com/en-gb/library/windows/desktop/ms646360.aspx -
@David,我认为所谓的
SC_DRAGMOVE常量中唯一的魔力是 MS 只是忘记将它包含到 winuser 头文件中(因此也记录它)。我不认为它有什么神奇之处。 sma6871,尝试code like this并可选择将常量移动到常用的位置。 -
@TLama 我的问题是
$F012的使用。使用SC_DRAGMOVE很好。你的代码是用于 VCL 的。 Q 是 FMX。
标签: delphi firemonkey delphi-xe3