Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#51

AW: VirtualStringTree - SHGetFileInfo hängt Programm auf / Canvas erlaubt kein Zeichn

  Alt 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)
  Mit Zitat antworten Zitat