Einzelnen Beitrag anzeigen

TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#1

VirtualTreeView und Sortieren

  Alt 28. Apr 2021, 10:45
Hallo,

ich benutze einen VirtualTreeView (VST) als Grid zur mehrspaltigen
Anzeige von Listeneinträgen (TList<T> mit Records als Einträgen.

Im GetText wird der anzuzeigende Listeneintrag über Node.Index ermittelt.

Nun würde ich auch gerne beim Klicken auf den Header einer Spalte nach
dieser sortieren, muss aber auch die ursprüngliche Sortierreihenfolge wieder
herstellen können.

Ich kenne jetzt 2 Möglichkeiten um im VST zu sortieren:

1. Ich sortiere im OnHeaderClick meine Liste um, das funktioniert, führt
aber dazu, dass ich eine Kopie meiner originalen Liste anfertigen und bei
späteren Änderungen durch den Benutzer (Editieren eines Eintrags, Löschen
oder hinzufügen) synchron halten muss.

2. Ich nutze OnCompareNodes des VST, da funktionierte aber die Ausgabe dann
nicht d.h. das sortieren schien keinen Effekt zu haben, da ich ja über
Node.Index den entsprechenden Listeneintrag im OnGetText ausgebe und somit
immer noch den selben ausgeben würde, da ja in meiner Liste immer noch alles
am selben Platz ist.

Würde es etwas bringen, den jeweiligen Eintrag (der müsste dann ein Objekt oder
ein Zeiger auf den Eintrag werden) als NodeData an den VST Knoten zu hängen?
Dann wäre das VST nicht mehr so wirklich virtuell benutzt, aber die Reihenfolge
meiner Listeneinträge würde immer gleich bleiben. OnGetText müsste sich dann halt
aus den NodeData die Daten ziehen.

Oder gibt's noch einen anderen Ansatz ohne großes Umbauen meines existierenden Codes?

Grüße
TurboMagic
  Mit Zitat antworten Zitat