![]() |
Dateitypen icons in listview
hallo,
ich habe hier mal im forum machgeschaut, und folgenden code zum auslesen, des dateitypen icons gefunden. mein problem ist, ich möchte mir das icon gerne in einem listview anstatt in der paintbox anzeigen lassen, jedoch bekomme ich es nicht wirklich hin. hat jemand eine idee, wie man dies umsetzen könnte?
Delphi-Quellcode:
procedure TForm1.DrawFile(Name: String);
var FileInfo: TSHFileInfo; ImageListHandle: THandle; aIcon: TIcon; begin // Speicher löschen FillChar(FileInfo, SizeOf(FileInfo), #0); // Handle der Image Liste der ausgewählten Datei ermitteln ImageListHandle := SHGetFileInfo( PChar(Name), 0, FileInfo, SizeOf(FileInfo), // großes Icon verlangen SHGFI_ICON or SHGFI_LARGEICON); try // TIcon Objekt erstellen aIcon := TIcon.Create; try // Icon Handle zuweisen aIcon.Handle := FileInfo.hIcon; // Transparent darstellen aIcon.Transparent := True; with PaintBox1 do begin // Paintbox auf die entsprechende Größe bringen Width := aIcon.Width; Height := aIcon.Height; Application.ProcessMessages; // Paintbox löschen Canvas.Rectangle(-1, -1, Succ(Width), Succ(Height)); // Icon darstellen Canvas.Draw(0, 0, aIcon); end; finally // TIcon Objekt freigeben FreeAndNil(aIcon); end; finally // Icon der Shell wieder freigeben DestroyIcon(FileInfo.hIcon); // Icon Liste der Shell wieder freigeben // ImageList_Destroy(ImageListHandle); end; end; procedure TForm1.Button1Click(Sender: TObject); var l:Tlistitem; begin if OpenDialog1.Execute then DrawFile(OpenDialog1.FileName); end; |
Re: Dateitypen icons in listview
Du ladest einfach alles in einer TImageList. Im Objekt-Inspektor änderst SmallImages von dem TListView mit deiner TImageList.
Danach machst einen code wie z.B.
Delphi-Quellcode:
Jedoch, nehmen wir an du speicherst jedes einzelne Icon in der TImageList, bei 1.000 Dateien frisst das viel Speicher.
var ListItem: TListItem;
begin ListItem := ListView1.Items.Add; ListItem.ImageIndex := 0; // oder den Index von der TImageList ListItem.Caption := 'Erste Spalte'; ListItem.SubItems.Add('Zweite..'); end; |
Re: Dateitypen icons in listview
Um jetzt mal keinen neuen Thread aufzumachen: "Gibt es eine Funktion, die anhand der Dateierweiterung das Icon zurückgibt? Also wenn ich gif übergebe das GIF Icon anzeigt und wenn ich exe übergebe das standard exe Icon ausgibt ...
Florian |
Re: Dateitypen icons in listview
Guckst du hier [oh]SHGetFileInfo[oh].
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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