AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView füllen dauert lange

Ein Thema von d7user1 · begonnen am 22. Mär 2014 · letzter Beitrag vom 22. Mär 2014
Antwort Antwort
d7user1
(Gast)

n/a Beiträge
 
#1

ListView füllen dauert lange

  Alt 22. Mär 2014, 12:22
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:
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;
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: ListView füllen dauert lange

  Alt 22. Mär 2014, 12:26
Schau mal etwas weiter unten: http://www.delphipraxis.net/179644-listview-mit-ownerdata-schneller-machen.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#3

AW: ListView füllen dauert lange

  Alt 22. Mär 2014, 15:26
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.
Gruß
Cookie
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#4

AW: ListView füllen dauert lange

  Alt 22. Mär 2014, 16:19
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
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#5

AW: ListView füllen dauert lange

  Alt 22. Mär 2014, 17:17
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.
Gruß
Cookie
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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