Ich habe nun eine TList und leider auch noch die oben genannte Fehlermeldung. Die Funktion GetExtIcon existiert nun bei mir in zwei Varianten, die hier genutzte steht im zweiten Kasten. Icon ist daher als HICON deklariert.
Delphi-Quellcode:
GetExtIcon(Ext, Icon, False);
Index := Icons.IndexOf(@Icon);
if Index = -1 then
begin
Icons.Add(@Icon);
TreeData.fIcon := Pred(Icons.Count);
end else
TreeData.fIcon := Index;
Delphi-Quellcode:
function GetExtIcon(const Ext: String; var Icon: HICON; const FileMustExist: Boolean): Boolean;
var FI : TSHFileInfo;
Attributes : DWORD;
Flags : Word;
begin
if FileMustExist then
begin
Attributes := 0;
Flags := SHGFI_ICON or SHGFI_SMALLICON;
end else
begin
Attributes := FILE_ATTRIBUTE_NORMAL;
Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON;
end;
if SHGetFileInfo(PChar(Ext), Attributes, FI, SizeOf(FI), Flags) <> 0 then
begin
Icon := FI.hIcon;
Result := True;
end else
Result := False;
end;