Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Im TlistView Fileicon darstellen (https://www.delphipraxis.net/37752-im-tlistview-fileicon-darstellen.html)

smart 9. Jan 2005 19:06


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:
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;
Wichtig ist noch, das der Code andere Fileoperationen frei geben kann.

Alexander 9. Jan 2005 19:10

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 15:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz