Registriert seit: 22. Jun 2018
2.175 Beiträge
|
AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn
12. Dez 2020, 20:39
Ungefähr so?
FormCreate (Deklration und FormDestroy spare ich mir hier)
IconDictionary := TDictionary<string, Integer>.Create;
VSTInitNode
Delphi-Quellcode:
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;
VSTGetImageIndex
Delphi-Quellcode:
if Kind in [ikNormal, ikSelected] then
begin
ImageIndex := TreeDataKlassen[Node^.Index].IconIndexSpalte1;
end;
Geändert von DieDolly (12. Dez 2020 um 20:53 Uhr)
|
|
Zitat
|