Jak przesuwać formę jeżeli BorderStyle bsNone
Musisz pierw zadeklarować dwie zmienne globanle:
Teraz wygeneruj procedury: OnMouseDown, OnMouseMove, OnMouseUp. Procedury te powinny wyglądać tak:
var MD : Boolean; P : TPoint;
Teraz wygeneruj procedury: OnMouseDown, OnMouseMove, OnMouseUp. Procedury te powinny wyglądać tak:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MD := True; P := Point(X, Y); end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if MD then begin Left := Left + (X - P.X); Top := Top + (Y - P.Y); end; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MD := False; end;
3 komentarze
fajne. przydaje sie do robienia efektownych graficznie aplikacji
Tak jest latwiej
wkleic w OnMouseDown formy
if Button = mbLeft then
begin
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
pozdrawiam
@bzz: Tak jest łatwiej ale jeżeli na formie jest obrazek np. tło formy to już ten pomysł nie jest skuteczny.
Lepiej dać tak:
W sekcji PRIVATE:
PROCEDURE WMNCHitTest(VAR Msg: TWMNCHitTest); MESSAGE WM_NCHITTEST;i uzupełniamy:
PROCEDURE TForm1.WMNCHitTest(VAR Msg: TWMNCHitTest);
BEGIN
INHERITED;
IF Msg.Result = HTCLIENT THEN
Msg.Result := HTCAPTION;
END;