Hi,
Die ImageList enthält eh alle benötigten Icons, also auch die der Laufwerke, Desktop, etc.
Hab folgende Lösung gefunden, um den Index für die passenden Icons zu ermitteln:
1.) Die Icons von Laufwerken kann man mit SHGetFileInfo eh ganz einfach anzeigen lassen. Man muss dazu nur statt dem Dateinamen den Laufwerksbuchstaben (z.B. 'C:\') übergeben.
2.) Den Desktop oder den Arbeitsplatz bekommt man so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function GetSpecialIcon(what: integer):integer; var pidl: PItemIDList; shfi: TSHFileInfo; begin SHGetSpecialFolderLocation(Form1.Handle, what, pidl); SHGetFileInfo(PChar(pidl), 0, shfi, SizeOf(shfi), SHGFI_PIDL or SHGFI_DISPLAYNAME or SHGFI_ICON or SHGFI_TYPENAME); result := shfi.iIcon; Form1.StaticText1.Caption := String(shfi.szDisplayName); SHFreeItemIDList(pidl); end; |
Der Aufruf erfolgt dann so:
Delphi-Quelltext
1:
| IconIndex:=GetSpecialIcon(CSIDL_DRIVES); |
für den Arbeitsplatz und so
Delphi-Quelltext
1:
| IconIndex:=GetSpecialIcon(CSIDL_DESKTOP); |
für den Desktop.