![]() |
AW: SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichnen / VirtualStringTr
Zitat:
Das ist sehr un-konstruktiv jedesmal eine neue ImageListe zu erstellen für 1 Icon! sorry Einmalig und fertig. Das ist dein Problem. Und wie gesagt das Handle des Icon löschen.
Delphi-Quellcode:
DestroyIcon(Info.HIcon);
|
AW: SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichnen / VirtualStringTr
Ungefähr so?
FormCreate
Delphi-Quellcode:
InitNode
SmallImages := TImageList.Create(Self);
SystemImageList := SHGetFileInfo('', 0, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); SmallImages.Handle := SystemImageList; SmallImages.ShareImages := True; VST.Images := SmallImages;
Delphi-Quellcode:
Ach das funktioniert doch eh nicht. Deinen Code verstehe ich nicht und auch keine Ahnung wo der hin soll, welche Variablentypen das sind, wie ich das am Ende anzeige usw.
SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON);
ImageList_AddIcon(SmallImages.Handle, Info.iIcon); DestroyIcon(Info.iIcon); // Mit dieser Zeile sehe ich dann keine Icons |
AW: SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichnen / VirtualStringTr
Zitat:
Das ImageList wird zerstört oder sonst was. Ist aber auch möglich das es in 10.4 einfach nicht mehr korrekt funktioniert. |
AW: SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichnen / VirtualStringTr
Ich verstehe deine Aussage aber auch nicht
Zitat:
Und außerdem. Woher will das VST wissen, welchen Index es für welches Node braucht? Dafür muss ich doch zwangsweise in jedem Node 1x GetSHFileInfo aufrufen. Zitat:
Hier nochjmal zusammengefasst wie ich es immer gemacht habe und wie es auch eigentlich immer funktioniert hat FormCreate
Delphi-Quellcode:
InitNode
SmallImages := TImageList.Create(Self);
SystemImageList := SHGetFileInfo('', 0, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); SmallImages.Handle := SystemImageList; SmallImages.ShareImages := True; VST.Images := SmallImages;
Delphi-Quellcode:
VSTGetImageIndex
SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON);
MeinNode-generisch.MeinIconIndex := Info.iIcon; // jetzt weiß der Datensatz unter dem Node, welcher IconIndex das Icon braucht.
Delphi-Quellcode:
ich glaube die ImageList benutze ich nicht einmal.
if Kind in [ikNormal, ikSelected] then
ImageIndex := MeinNode-generisch.MeinIconIndex; |
AW: SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichnen / VirtualStringTr
Zitat:
Zitat:
Delphi-Quellcode:
SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON);
MeinNode-generisch.MeinIconIndex := Info.iIcon; // jetzt weiß der Datensatz unter dem Node, welcher IconIndex das Icon braucht. Zitat:
Und du lädst jedesmal ein neues Icon anstatt die ImageListe zu verwenden wo dann alle schon enthalten sind. da ist so einiges faul. Der richtige weg ist. Die ImageList einmalig mit allen Icons zu füllen. Und bei InitNode den entsprechenden index aus der ImageList (Hicon) der Node zuzuweisen. |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Wieso "so einiges"?
Ich würde es ja verbessern aber ich verstehe deinen Code nicht, weil da für mich der Kontext fehlt. Ich habe das eben aber mal mit der ImageList versucht. Egal ob ein Icon schon da drin ist oder nicht, es werden in InitNode immer weiter Icons in die Liste gepackt. Ich kapiere mittlerweile überhaupt nix mehr und besonders nicht, warum die ImageList angeblich so gut sein soll. Woher soll die denn beim Hinzufügen neuer Icons wissen, ob das schon da drin ist oder nicht? Und auch wenn, das ist ja nicht einmal mein Problem. ich muss für JEDEN Node GetSHFileInfo aufrufen, um überhaupt herauszubekommen, welches Icon dahintersteckt. Wie soll mir da eine ImageList helfen? Du redest hier im Prinzip mit einem Anfänger! Hast du keinen normalen Code statt den aufd Seite 1 mit SetLength, ItemsInfo und so? |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Zitat:
Nur zur Veranschaulichung es geht um die Bilder.. ![]() |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Verstehe ich alles nicht. Ich habe es im Prinzip so gemacht wie hier aus #7
![]() |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Nun ja du rufst in jeder InitNode SHGetFileInfo auf das ist ein Overhead oder?
Warum? Frage ich mich. Das meine ich mit Un-Konstruktiv. ![]() |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Dazu meine Gegenfrage
Zitat:
![]() Oder ist das alles schon wieder so ein unbekannter Delphi-Fehler? Hier ist auch ein Beispiel wo SHGetFileInfo ständig aufgerufen wird ohne irgendwas mit Destroy oder so ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz