Reihenfolge im ListView mit Drag and Drop ändern und anzeigen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
joesky
Beiträge: 25
Registriert: Fr 12. Feb 2021, 16:38

Reihenfolge im ListView mit Drag and Drop ändern und anzeigen

Beitrag von joesky »

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
Playlist.png (11.4 KiB) 1074 mal betrachtet

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Reihenfolge im ListView mit Drag and Drop ändern und anzeigen

Beitrag von Michl »

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 :wink:
Dateianhänge
DragDropListView.zip
(2.97 KiB) 59-mal heruntergeladen

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

joesky
Beiträge: 25
Registriert: Fr 12. Feb 2021, 16:38

Re: Reihenfolge im ListView mit Drag and Drop ändern und anzeigen

Beitrag von joesky »

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.

joesky
Beiträge: 25
Registriert: Fr 12. Feb 2021, 16:38

Re: Reihenfolge im ListView mit Drag and Drop ändern und anzeigen

Beitrag von joesky »

Ich hab unter die ListView ein Panel als Parent gelegt und das Panel für die Anzeige auch da reingelegt. Jetzt klappt's.

Antworten