Icons frei verschieben im TListView



  • Ich will eine TListView quasi als Desktop einsetzen, d.h. der User soll Symbole, die für verschiedene Dokumente stehen einfach hin- und hermanschen können. Dummerweise sortiert meine TListView immer, die Icons können nicht einfach von links nach rechts verschoben werden. Sie kleben immer an ihren Rasterplätzen. Ich hab schon alles ausprobiert, alle Sortieroptionen aus und so weiter. Geht das mit TListView überhaupt? Danke!



  • Das liegt nicht an der Sortierung, sondern daran dass man das hin- und herverschieben manuell übernehmen muss. Vereinfacht gesagt, im OnEndDrag der ListView die Position der selektierten Items mit ->SetPosition(..) aktualisieren. Wenn Mehrfachselektion gefragt ist, muss man sich die Mausposition beim Anfang des Drag-Prozesses (OnStartDrag) merken und beim EndDrag dann für jedes selektierte Item das jeweilige Delta zur Startposition nehmen, zur aktuellen Mausposition dazuaddieren und voila, man hat die neue Position des Items.

    Ist einfacher als es jetzt klingt. Bin zu müde, den Satz oben auseinanderzufieseln.


Log in to reply