Danke für die Antwort.
Antrepolit hat geschrieben:Ich hatte das Problem mal. Meine Lösung bestand darin, dass ich alle System-Icons bekannter Dateitypen in eine TImageList gesteckt habe und später anhand der Endung einer Datei das System-Icon zugeordnet habe.
Ja, aber das ist mir zu wenig genau. So haben alle *.exe das gleiche Icon, oder?
Ausserdem besteht bei mir die Schwierigkeit darin, ein Konstrukt umzusetzen, welches so in Lazarus nicht möglich ist (lasse mich gerne belehren).
Der Delphi Code sieht so aus:
Code: Alles auswählen
SmallFolderImages.Handle := SHGetFileInfo('', 0, SHFileInfo, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
Es wird also das Resultat von SHGetFileInfo, also ein DWORD_PTR resp. ein HIMAGELIST, direkt dem Handle einer TImageList (SmallFolderImages) zugewiesen. Fertsch! Dann hast du deine Imagelist.
Bei Delphi ist das alles um das HIMAGELIST herum aufgebaut, und Icons werden nur nach Bedarf abgeholt.
Bei Lazarus kann ich das Handle nicht setzen.
Wenn ich nicht die Lazarus TImageList komplett umbauen will, dann muss ich das zu Beginn alles einkopieren.
Das sind dann bei mir z.Zt. 501 Icons, die man mit CommCtrl.ImageList_GetIcon abholen muss.
Irgendwie schmeckt dem Windows das aber nicht richtig, so dass es irgendwann zu streiken anfängt, und dann nur noch schwarze Kästen liefert.