![]() |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Ungefähr so?
FormCreate (Deklration und FormDestroy spare ich mir hier)
Delphi-Quellcode:
VSTInitNode
IconDictionary := TDictionary<string, Integer>.Create;
Delphi-Quellcode:
VSTGetImageIndex
var
Info: TSHFileInfo; FileExtension: string; begin Node.SetData<TTreeData>(TreeDataKlassen[Node.Index]); FileExtension := ExtractFileExt(TreeDataKlassen[Node^.Index].PfadSpalte1); if IconDictionary.ContainsKey(FileExtension) then begin TreeDataKlassen[Node^.Index].IconIndexSpalte1 := IconDictionary.Items[FileExtension]; end else begin SHGetFileInfo(PChar(TreeDataKlassen[Node^.Index].PfadSpalte1), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON); ImageList_AddIcon(SmallImages.Handle, Info.hIcon); TreeDataKlassen[Node^.Index].IconIndexSpalte1 := SmallImages.Count - 1; IconDictionary.Add(FileExtension, SmallImages.Count - 1); end; end;
Delphi-Quellcode:
if Kind in [ikNormal, ikSelected] then
begin ImageIndex := TreeDataKlassen[Node^.Index].IconIndexSpalte1; end; |
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
Das sieht soweit ich das überblicken kann recht gut aus. Aber wieso führst du immer noch das SHGetFileInfo im InitNode aus? Mach das doch auch an der Stelle, an der du deine TreeDataKlassen Liste füllst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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