![]() |
SHGetFileInfo richtig anwenden
Ich habe gerade eine Stelle im Code wiedergefunden, die ich lange nicht beachtet habe.
Damit eine VirtualStringTree für ihre Dateieinträge die richtigen Icons angezeigt bekommt, verwende ich SHGetFileInfo im FormCreate und füge das dann einer TImageList (Handle) mit SmallImages auf True an.
Delphi-Quellcode:
SystemIcons := SHGetFileInfo('', 0, Info, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
Im GetImageIndex Event lade ich Icons einmalig
Delphi-Quellcode:
SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_TYPENAME);
Icons für Dateien werden anzeigt. Für Verzeichnisse aber nicht. Wie wendet man SHGetFileInfo richtig und performant an? |
AW: SHGetFileInfo richtig anwenden
|
AW: SHGetFileInfo richtig anwenden
Delphi-Quellcode:
ist scheinbar performanter, da weniger Daten abgefragt werden. Icons von Verzeichnissen werden aber nicht angezeigt.
SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON
Daran schuld ist scheinbar das
Delphi-Quellcode:
. Aber lasse ich das weg, ist die ganze Sache wesentlich langsamer.
SHGFI_USEFILEATTRIBUTES
Folgendermaßen funktioniert es für Dateien und Verzeichnisse. Die Geschwindigkeit ist relativ OK.
Delphi-Quellcode:
if IstDatei then
SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON) else SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 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