
Reihenfolge im ListView mit Drag and Drop ändern und anzeigen
Reihenfolge im ListView mit Drag and Drop ändern und anzeigen
Ich habe eine Playlist mit dem ListView erstellt und will nun die Reihenfolge im ListView per drag and drop verändern. Das funktioniert auch so weit. Realisiert habe ich das mit dem DragObject beim StartDrag. Jetzt würde ich gerne noch mit einem kleinen Marker anzeigen, wohin ich das Item verschiebe (siehe Bild, Marker mit magenta eingezeichnet) bevor ich die Maustaste loslasse. Der Marker soll immer die aktuelle Ablageposition anzeigen. Hat jemand so etwas schon gemacht? Ich hab versucht bei Google was zu finden, aber entweder waren meine Suchbegriffe falsch (zu vermuten) oder niemand braucht das. 

- Dateianhänge
-
- Playlist.png (11.4 KiB) 1242 mal betrachtet
Re: Reihenfolge im ListView mit Drag and Drop ändern und anzeigen
Anbei ein Beispielprojekt, was sowas macht. Habe es mit einem Panel und Timer umgesetzt.
Sicherlich geht es auch anders, aber speziell wenn das Drag&Drop abgebrochen wird, fehlt ein Eventhandler zum einhängen. Somit schließt sich das im OnCustomDrawItem vom Listview aus, wie ich es sonst machen würde.
Vielleicht hilfts ja als Anregung
Sicherlich geht es auch anders, aber speziell wenn das Drag&Drop abgebrochen wird, fehlt ein Eventhandler zum einhängen. Somit schließt sich das im OnCustomDrawItem vom Listview aus, wie ich es sonst machen würde.
Vielleicht hilfts ja als Anregung

- Dateianhänge
-
DragDropListView.zip
- (2.97 KiB) 72-mal heruntergeladen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Reihenfolge im ListView mit Drag and Drop ändern und anzeigen
Danke! Das ist schon mal ein sehr guter Anfang. Problem ist hier erstmal, dass sobald die Listview an einer anderen stelle als 0,0 steht, es nicht mehr funktioniert. Ich suche noch das Problem.
Re: Reihenfolge im ListView mit Drag and Drop ändern und anzeigen
Ich hab unter die ListView ein Panel als Parent gelegt und das Panel für die Anzeige auch da reingelegt. Jetzt klappt's.