Ich habe gestern den ganzen Tag Codeschnipsel und Beiträge hier zu diesem Thema gelesen, weil ich in meinem
FTP-Client gern Windows-Icons für die
FTP-Liste nehmen möchte. Aber das Höchste, was ich bis jetzt als Index aus GetFileInfo gekriegt habe, ist 2. Das heißt, bis jetzt habe ich nur OverlayIcons zu sehen bekommen. Bitte sag mir einer, was hier falsch ist. Es ist übrigens ein
MDI-Programm. Die Imagelist für die Systemicons ist im Hauptformular, die Listenansicht befindet sich auf dem jeweiligen MDIchild.
OnCreate des Hauptformulars:
Delphi-Quellcode:
var hIl:HIMAGELIST;
fi:TSHFileInfo;
begin
hIl:=HIMAGELIST(SHGetFileInfo('',0,fi,sizeof(fi),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON));
if(hIl<>0) then ilShellIcons.Handle:=hIl;
// ShareImages ist schon zur Entwurfszeit auf true gesetzt
// [...]
end;
Die Prozedur, die den ListView füllt:
Delphi-Quellcode:
procedure RefreshList;
var fi:TSHFileInfo; Item:tListItem;
begin
// [...]
// Programmeinstellung: Windows-Icons verwenden?
if fm.Settings.FTPicons=2 then begin
ZeroMemory(@fi,sizeof(TSHFileInfo)); // brauche ich das überhaupt jedes mal?
// l ist vom Typ TidListItems, also das Listing des akt. Verzeichnisses.
SHGetFileInfo(PChar('c:\'+l[i].FileName),0,fi,SizeOf(fi),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
Item.ImageIndex:=fi.iIcon;
end
end;