ListView füllen dauert lange
hallo. ich befülle eine listview momentan mit 13000 items zum testen. das dauert momentan mit ein paar extras wie Icon hinzufügen, DateTimeToStr, Copy und MeinItem.Checked := True
runde 27 sekunden. nehme ich das hinzufügen des icons heraus dauert es noch 9 sekunden. mit icon in der liste (dateityp z.b.) ist es natürlich schöner. aber wie löse ich das problem mit den 17 sekunden die zuviel sind? ich füge das icon so hinzu:
Delphi-Quellcode:
gibt es eine schnellere methode als die ImageList? denn wenn 13.000 mal dasselbe icon per SHGetFileInfo() geholt wird, wird es auch 13.000 in die ImagList hinzugefügt.
var
Icon: TIcon; FileInfo: SHFILEINFO; begin Icon := TIcon.Create; // ... SHGetFileInfo(PChar(sSourceDir + sCurrItem), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON); Icon.Handle := FileInfo.hIcon; MeinItem.ImageIndex := ImageList1.AddIcon(Icon); // ... end; |
AW: ListView füllen dauert lange
Schau mal etwas weiter unten: http://www.delphipraxis.net/179644-listview-mit-ownerdata-schneller-machen.html
|
AW: ListView füllen dauert lange
Wie fügst du denn die Items zu?
Mit Items.Add ist das grotten langsam weil alle Items in dem Listview gespiechert werden. Das solltest du virtuell machen. Dazu gibt es soagr ein Beispiel bei den Beispielprojekten glaub ich. Du solltest dem Listview eine SystemImageliste zuweisen und den Iconindex abfragen, das dürfte auch wesentlich schneller sein. |
AW: ListView füllen dauert lange
mit MeinItem := ListView1.Items.Add; momentan. virtuell? da kenne ich mich leider nicht aus.
die icons lade ich wie im beispiel von popov nun in eine liste und lade die liste wenn sie gebraucht wird und nicht vorher (unterschied: vorher etwas über 25 sekunden, nun 4 bei 13.000 items). http://www.delphipraxis.net/179644-l...ml#post1253010 |
AW: ListView füllen dauert lange
Dann ist das auch schon die Antwort. Mit Items.Add dauert das halt ewig.
Wie schon gesagt sollte bei den Demos ein Beispiel dabei sein, welches Virtual Listview heißt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 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