В формах 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
. Если это не определено, определите это. - person David Heffernan   schedule 13.03.2013WM_SYSCOMMAND
? - person sma6871   schedule 13.03.2013WM_SYSCOMMAND = $0112
msdn.microsoft.com/en-gb/library/windows /рабочий стол/ms646360.aspx - person David Heffernan   schedule 13.03.2013ReleaseCapture; SendMessage(Form4.Handle, $0112, $F012, 0) ;
- person sma6871   schedule 13.03.2013$F012
. У меня нет особой мотивации пытаться расшифровать магические константы. - person David Heffernan   schedule 13.03.2013SC_DRAGMOVE = $F012;
- person sma6871   schedule 13.03.2013SC_DRAGMOVE
заключается в том, что MS просто забыла включить ее в заголовочный файл winuser (и из-за этого также задокументировать ее). Я не думаю, что это какое-то волшебство. sma6871, попробуйтеcode like this
и при необходимости переместите константы в общие. - person TLama   schedule 13.03.2013$F012
. ИспользованиеSC_DRAGMOVE
в порядке. И ваш код для VCL. Q — это FMX. - person David Heffernan   schedule 13.03.2013