![]() |
Im TlistView Fileicon darstellen
Ich möchte in einem TListview Dateien mit Icon darstellen. Dazu habe ich eine Form mit TListview ,TFileListBox und einem Button. Wenn ich auf dem Button klicke werden die angezeigten dateien im TListview mit Icons dargestellt. Das ganze klappt auch sehr gut, ist aber sehr langsam. Hat Einer von Euch einen Vorschlag wie man das ganze schneller machen kann?
Code:
Wichtig ist noch, das der Code andere Fileoperationen frei geben kann.
function GetAssociatedIcon(const AExtension: string; ASmall: Boolean): HIcon;
var Info: TSHFileInfo; Flags: Cardinal; begin if ASmall then Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES; SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags); Result := Info.hIcon; end; procedure TForm1.Button3Click(Sender: TObject); var icon: TIcon; ListItem: TListItem; Line:Integer; begin ListView1.Items.Clear; For Line := 0 To FileListBox1.Items.Count -1 do begin icon := TIcon.Create; try If (ExtractFileExt(FileListBox1.Items[Line]) = '.exe') or (ExtractFileExt(FileListBox1.Items[Line]) = '.EXE') Then icon.Handle := ExtractIcon(Handle, PChar(FileListBox1.Items[Line]), 0) else icon.Handle := GetAssociatedIcon(ExtractFileExt(FileListBox1.Items[Line]), True); with ListView1 do begin ListItem := Items.Add; Listitem.Caption := FileListBox1.Items[Line]; ListView1.LargeImages := ImageList1; ListView1.ViewStyle := vsIcon; ListItem.ImageIndex := ImageList1.AddIcon(Icon); end; finally icon.Free; end; end; end; |
Re: Im TlistView Fileicon darstellen
Du könntest das gesamte Hinzufügen der Items in die Listview noch in BeginUpdate und EndUpdate Blöcke setzen.
Aber generell ist die Listview nicht so der "Renner"... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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