Delphi FAQ

Jak przesuwać formę chwytając za jakiś komponent

Japcok

Jeżeli chcemy, aby jakiś komponent (np. TImage - jeśli robimy swój pasek tytułowy) służył do przesuwania formy, to w OnMouseDown tego komponentu dajemy:

If Button = mbLeft then
begin 
  //będziemy mogli przesuwać formę tylko lewym przyciskiem myszki, bo prawym to chyba troche głupio ;)
  ReleaseCapture;
  SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;

Możemy ten kodzik dać także do OnMouseUp wtedy gdy klikniemy na tym komponencie to forma 'przyklei' się do kursora myszki, a po ponownym kliknięciu 'odklei' się.

FAQ

7 komentarzy

unit1.pas(127,17) Error: Identifier not found "ReleaseCapture"
unit1.pas(128,14) Error: Identifier not found "SendMessage"
unit1.pas(128,39) Error: Identifier not found "WM_NCLBUTTONDOWN"
unit1.pas(128,50) Error: Identifier not found "HTCAPTION"
unit1.pas(142) Fatal: There were 4 errors compiling module, stopping

Dziwne. A mnie to nie działa. :O

Przydatna wskazówka!

THX!

przydaje się... dobra wskazówka :)

Jak to niektórym mało do szczęścia potrzeba :d

Super trik ;) - Jak dla mnie bomba.

Ja używam czegoś takiego

if button = mbleft then
begin
releasecapture;
TWincontrol(Label11.Parent).perform(WM_syscommand, $F012, 0);
end;