Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Komponente zur Laufzeit verschieben ohne MouseDown

  Alt 20. Aug 2007, 14:40
Wenn du es nur über den Kopfteil verschieben möchtest, dann grenze den Aktionsbereich für dein Move doch uber die mitgelieferte X/Y-Koordinate ein.

Bsp.:
Delphi-Quellcode:
procedure CWidgetBase.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  IF Y < MyHeader.Height then Exit;
  Screen.cursor := crHandPoint;
  ReleaseCapture;
  Self.Perform(WM_SYSCOMMAND,SC_MOVE,0);
end;
Hierbei soll MyHeader dein Kopfteil sein. Den Cursor kannst du im MouseUp wieder zurücksetzen. Willst du die Position während des Movens überwachen, so nutze die Windows-Nachricht wm_moving. Ich habe ähnliches Thema hier wm_moving, wm_sizing am wickel gehabt.

Gruß oki
42
  Mit Zitat antworten Zitat