Achso, ja die Icons ^^
Also du machst dir ne Variable in den public Bereich deines Forms vom Typ TImageList.
Im OnCreate deines Forms schreibst du dann:
Delphi-Quellcode:
var
SHFileInfo: TSHFileInfo;
SysIcons: THandle;
begin
// ...
GlobalImageList := TImageList.Create(MainForm);
// oder halt andere ImageList
try
SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0), 1, 3)), 0, SHFileInfo,
SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
SHGFI_ICON);
finally
DestroyIcon(SHFileInfo.hIcon);
end;
ListView.ViewStyle := vsReport;
ListView1.SmallImages := GlobalImageList;
Die Prozedur ist auch noch hilfreich:
Delphi-Quellcode:
function GetAssociatedIcon(const AExtension: string; ASmall: Boolean): HIcon;
var
Info: TSHFileInfo;
Flags: Cardinal;
begin
if ASmall then
Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES
else
Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES;
SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags);
Result := Info.hIcon;
end;
Und dann in der Prozedur, wo du die Items hinzufügst
Delphi-Quellcode:
var
Icon: TIcon;
begin
// ...
Icon := TIcon.Create;
try
Icon.Handle := GetAssociatedIcon(ExtractFileExt(DateiName), True);
Icon.Transparent := True;
// dem Item das hinzugefügt wurde zuweisen:
// Item hinzufügen...
Item.ImageIndex := GlobalImageList.AddIcon(Icon);
finally
Icon.Free;
end;
// ...
end;
Schreib es dir nach belieben um ^^
mfG
mirage228