![]() |
Icons in Listbox
Hi
so ich hab geschaft einen Filemanager zu coden nun geht es um das aussehen, meine Frage ist nun wie man es hinbekmmt das wenn in der Listbox nun die namen der Files die sich z.B. auf Laufwerk C:/ befinden auch immer das Pasende Icon dazu gepackt wird. also wenn es eine Winrar File ist dann steht am anfang gans klein das Winrar Icon und dann der Filename. das selbe auch bei allen anderen Formaten und Ordnern. wie kann ich das realisieren? |
Re: Icons in Listbox
Das geht über die Shellextensions. Schau doch mal in der ShellAPI, da müsste es was geben. Ich meine, bei
![]() |
Re: Icons in Listbox
nach was soll ich bei swissdelphicenter suchen? wen ich Shellextensions
eingebe findet er nichts |
Re: Icons in Listbox
es gibt mehrere Variante an die Icons zu kommen. Zum einen ExtractAssociatedIcon zum anderen
gibt es die Möglichkeit eine Imagelist zu nehmen (fImgList)
Delphi-Quellcode:
der Quelltext ist ein Auszug aus einem meiner Programme, daher auch die nicht immer ganz eindeutigen VariablenNamen
//zum Initialisieren (zur einmal ausführen)
var LSFI: TSHFileInfo; [...] LHandle := SHGetFileInfo('', 0, LSFI, SizeOf(LSFI), SHGFI_SYSICONINDEX or SHGFI_OPENICON); if LHandle <> 0 then begin fImgList.Handle := LHandle; fImgList.ShareImages := True; end; [...] //zum Icon holen var LInfo: TSHFileInfo; [...] SHGetFileInfo(PChar(LFilename),0,LInfo,SizeOf(TSHFileInfo),SHGFI_SYSIconIndex or SHGFI_TYPENAME); fImgList.GetBitmap(LInfo.iIcon, fTmpBitmap); |
Re: Icons in Listbox
@SirThornberry:
1. mit 'nem leeren Dateinamen geht's auch? 2. Wieso SHGFI_OPENICON? Hier mal eine kleine Funktion, die ich mir Anno 98 geschrieben hab' (könnte man lt. obigen Post dann wohl auch vereinfachen) - liefert das Handle für kleine oder große Symbole:
Delphi-Quellcode:
[Nachtrag]
function GetShellImageListHandle(fSmall: boolean): THandle;
var sfi: TShFileInfo; WinDir: string; begin SetLength(WinDir, MAX_PATH); GetWindowsDirectory(PChar(WinDir), MAX_PATH); FillChar(sfi, SizeOf(sfi), 0); if fSmall then Result := SHGetFileInfo(PChar(WinDir), 0, sfi, SizeOf(sfi), SHGFI_SYSICONINDEX or SHGFI_SMALLICON) else Result := SHGetFileInfo(PChar(WinDir), 0, sfi, SizeOf(sfi), SHGFI_SYSICONINDEX or SHGFI_LARGEICON); end; Ach so: für einzelne Dateien und Ordner kannst du dann ebenfalls mit SHGetFileInfo mit dem Parameter SHGFI_SYSICONINDEX den Image-Index ermitteln. |
Re: Icons in Listbox
Zitat:
Viel Spaß MaBuSE |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz