Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#40

AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn

  Alt 11. Dez 2020, 11:56
Delphi-Quellcode:
   SHGetFileInfo(PChar(TreeDataKlassen[Node^.Index].PfadSpalte1), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON);
   TreeDataKlassen[Node^.Index].IconIndexSpalte1 := Info.iIcon;
Es wird immer ruckeln und du wirst immer die Ressourcen Probleme haben, von wegen kann nicht auf das Canvas zeichnen.
Es hat ganz einfach damit zu tun das du sehr viele Handles in den Speicher lädst und sie nicht freigibst.

Sorry aber du kannst das auf diese weise niemals in den griff bekommen weil Windows das nicht zulässt.
Und bedenke irgendwann ist das Limit an Handles erreicht und dann geht bei dir gar nichts mehr.
Und ja es gibt eine Beschränkung wie viele Handles ein Anwendung verwenden darf.

Genau wie dein vorheriges SystemImageList := SHGetFileInfo was zur folge hatte das überhaupt keine Icons geladen wurden.
Wie dem auch sei.. Tut mir leid für dich aber das ist der falsche weg.
Das VirtualStringTree macht es einen aber auch besonders schwer weil man nicht auf den Index jeder Node hin prüfen kann.
Deshalb macht eine ImageList auch keinen sinn wenn man sie mit nichts vergleichen kann.
Nun ist halt so.

Zitat:
Wie man da mit der ImageList arbeiten soll, ist für mich immer noch ein großes Geheimnis.
Kann man nicht weil du den Index vom ImageList mit nichts vergleichen kannst.
Wenn das gehen würde..
If ImageList.ImageIndex = NOde^.Index then

aber selbst das funktioniert nicht! Eine andere Lösung habe ich auch nicht gefunden.

Geändert von venice2 (11. Dez 2020 um 11:58 Uhr)
  Mit Zitat antworten Zitat