Ich würde dir vorschlagen dir die Samples vom VirtualStringTree anzuschauen.
https://github.com/JAM-Software/Virtual-TreeView
Keine Ahnung ob es das gleiche ist was du verwendest.
Zuletzt.
https://stackoverflow.com/questions/...ngetimageindex
https://stackoverrun.com/de/q/3265058
den index aus der ImageList bekommt man so.
VirtualStringTree1GetImageIndex
virtualstringtree and imagelist delphi
EDIT:
Zitat:
Hier ist auch ein Beispiel wo SHGetFileInfo ständig aufgerufen wird ohne irgendwas mit Destroy oder so
Dann darfst du dich nicht wundern das nichts mehr gezeichnet wird.
ImageIndex := MeinNode-generisch.MeinIconIndex;
Du lädst jedesmal ein neues Icon.
Prüfe dann mal das
Handle es ist unterschiedlich oder?
Also wird das Icon nicht freigegeben das bedeutet der Speicher deiner Anwendung explodiert Exponential
Das ist der Grund warum du dann irgendwann einfach nicht mehr zeichnen kannst.
Das du das Icon nicht mehr siehst ist normal nach DestroyIcon(Info.Hicon) denn du verwendest nicht den Index der ImageList sondern dein Index ist ein HIcon.
Das ist definitiv falsch!