Moin Edi,
du hast deine Delphi-Version nicht angegeben - trotzdem: Weißt du, dass die Komponente TShellListView mit der Eigenschaft Sorted = True und in Verbindung mit dem Ereignis OnAddFolder() eigentlich genau das tut, was du nachzustellen versuchst?
SortType <> stNone führt ab dem Zeitpunkt des Setzens zu einer automatischen Sortierung.
Und noch ein paar Tipps:
- Eine ListView kann auch im virtuellen Modus betrieben werden, so dass deine doppelte Datenvorhaltung unnötig wird.
- ListBox ist kein Synonym für ListView.
- Die Funktion IncludeTrailingPathDelimiter() hängt den backslash nur dann an, wenn es auch korrekt ist.
- Du kannst Dateien und Ordner ruhig in einem Durchgang aufnehmen und die Fallunterscheidung in der einen Schleife machen.
- Wenn du an den Namen eines Verzeichnisses einen backslash anhängst, dann kannst du bei einer virtuellen ListView und beim Sortieren Ordner und Dateien leicht unterscheiden.
- Der Zugriff auf visuelle Komponenten aus einer Methode heraus ist in Ordnung, aus einer freien Prozedur oder Funktion solltest du nach Möglichkeit nur auf Objekte zugreifen, die als Parameter übergeben wurden.
Ich kann an deinem Code erkennen, dass du dir Gedanken gemacht hast, aber da steckt noch viel Verbesserungspotential drin.
Vergiss nicht mit einem richtig großen Verzeichnis zu testen.
Freundliche Grüße