Programowanie w języku Delphi » FAQ

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

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ę.

7 komentarzy

nuke 2010-02-24 22:02

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

M.a.x 2005-12-29 17:05

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

Pik 2003-12-28 19:48

Przydatna wskazówka!

THX!

Waldi__17 2003-10-17 16:22

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

Marooned 2003-10-17 15:07

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

netvalker 2003-10-17 14:58

Super trik ;) - Jak dla mnie bomba.

.::CYMES::. 2003-10-17 23:50

Ja używam czegoś takiego

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