Einzelnen Beitrag anzeigen

Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: einfaches Drag & Drop und MouseUp

  Alt 14. Jun 2017, 07:59
Aus der Hilfe:
Zitat:
Mit BeginDrag kann das Ziehen eines Steuerelements gestartet werden. Die Methode wird in einer Anwendung nur explizit aufgerufen, wenn die Eigenschaft DragMode des betreffenden Steuerelements den Wert dmManual hat. Bei der Einstellung dmAutomatic wird BeginDrag automatisch aufgerufen.

Wenn der Parameter Immediate true ist, wird dem Mauszeiger die Cursorform der Eigenschaft DragCursor zugewiesen und der Ziehvorgang umgehend gestartet. Hat Immediate den Wert false, wird die Form des Mauszeigers nicht geändert und das Ziehen erst begonnen, wenn der Benutzer den Mauszeiger um die in Threshold angegebene Pixelanzahl verschiebt. Ist Threshold kleiner als 0, wird der Wert aus der Eigenschaft DragThreshold der globalen Variable Mouse gelesen.

Durch Setzen von Immediate auf false kann das Steuerelement Mausklicks entgegennehmen, ohne dass eine Drag&Drop- oder Drag&Dock-Operation begonnen wird.
Es reicht also wenn Du Threshold setzt. Allerdings wird von BeginDrag sofort ein WM_LBUTTONUP an das Label geschickt siehe:

in BeginDrag:

Delphi-Quellcode:
  if csLButtonDown in ControlState then
    begin
      GetCursorPos(P);
      Perform(WM_LBUTTONUP, 0, PointToLParam(ScreenToClient(P)));
    end;
Dadurch wird Dein Flag StartDragging immer true sein im MouseUp.
Fritz Westermann
  Mit Zitat antworten Zitat