Die DragListbox generiert vier Nachrichten, die wir als Reaktion auf das "Ziehen" nutzen können:
| Wert | Bedeutung |
|---|---|
| DL_BEGINDRAG | wird generiert, wenn der "Zieh"-Vorgang (Drag) begonnen wird |
| DL_DRAGGING | wird während des "Ziehens" erzeugt |
| DL_CANCELDRAG | wird beim Abbrechen des Vorgangs erzeugt (ausgelöst durch ESC) |
| DL_DROPPED | wird beim Beenden des "Zieh"-Vorgangs (Drop) ausgelöst |
Da es sich aber bei unserer zuvor registrierten Drag-Nachricht (DL_MESSAGE) um eine Variable handelt, können wir die o.g. Benachrichtigungen nicht wie sonst üblich auswerten. Wir müssen das daher im else-Teil von case machen. Dieses Prinzip wird uns beim Suchen- und Ersetzendialog des
else begin result := FALSE; // message handling of the drag listbox comes here if DL_MESSAGE <> 0 then // DL_MESSAGE cannot be WM_NULL (=0)! if uMsg = DL_MESSAGE then
Welche Nachricht nun generiert wurde, sagt uns das
lParam übermittelt wird. Dabei ist für uns die Membervariable uNotification von Interesse, die die o.g. Benachrichtigungen der DragListbox enthält
case PDRAGLISTINFO(lParam)^.uNotification of
DL_BEGINDRAG:
{ ... }
DL_DRAGGING:
{ ... }
DL_CANCELDRAG:
{ ... }
DL_DROPPED:
{ ... }
end; // case (PDRAGLISTINFO(lParam)^.uNotification of)
end; // else (case uMsg of)