Ich habe 35000 Daten und suche nach ein schnelle Lösung.
Ich habe 2 Lösungsansätze:
1) Daten vom ListIconGadget in eine Array schreiben, mit SortStructuredArray sortieren und im ListIconGadget schreiben
2) Daten in eine DB (:memory:) schrieben und lesen mit "ORDER BY" und im ListIconGadget schreiben
35000 Datenzeilen in einem ListIconGadget sind ganz schöner Overkill. Für solche Datenmengen ist ein ListIconGadget nicht geeignet. Ich kann mir vorstellen, dass das ziemlich langsam ist, oder?
Aber zur eigentliche Frage:
Generell würde ich die Daten immer in einem Array oder einer LinkedList halten und mit SetGadgetItemData() für jede Zeile den Pointer zu den Originaldaten speichern, also zum Element im Array oder der LinkedList. Das ist praktisch, wenn man nach einem Klick auf ein Element in der Liste schnell auf die Originaldaten zugreifen will. Außerdem bietet es die Möglichkeit mehr zu jeder Zeile zu speichern als man im ListIconGadget als Spalten darstellt.
Zum Sortieren kann man dann ganz einfach mit SortStructuredArray oder SortStructuredList die Original-Daten sortieren. Und statt das ListIconGadget danach zu leeren und neu zu füllen, kann man einfach den Inhalt aller Zeilen mit SetGadgetItemText() ersetzen, denn das geht schneller als 35000 mal AddGadgetItem() aufzurufen.
Mit der Datenbankmethode hast du möglicherweise bessere Sortiermöglichkeiten, aber dann würde ich die Daten ebenfalls von Anfang an dort reinschreiben und das nicht nur als temporäre Lösung zum Sortieren nutzen.
Danke NicTheQuick für deine Rückmeldung und Anregung.
Die Daten sind aus eine Datenbank und können geändert, gelöscht oder neu definiert werden und nach Abfrage zurück in der DB gespeichert werden.
Die Daten in eine List abzulegen und mit SortStructuredList sortieren und mit SetGadgetItemText() ersetzen müsste so funktionieren.