Entwickler-Ecke
Sonstiges (Delphi) - HandleStream (Record) in ListView lesen sehr langsam
Chatfix - Di 18.10.05 10:44
Titel: HandleStream (Record) in ListView lesen sehr langsam
Hallo,
ich habe zwar gesucht weis aber nciht so recht nach wasu nd hab auch nix passendes gefunden, deshalb meine Frage.
Ich habe 9999 einträge in einem array dessen Typ ein Record ist und speichere diese per HandleStream.
Will ich diese einträge nun auslesen funktioniert das superschnell, ich will aber alle einträge in einem ListView und das hinzufügen per schleife (for to do) aus dem array dauert ewig.
Die ersten einträge gehen sper schnell und es wird immer langsamer...
hat einer eine idee an was das leigen könnte?
Martin1966 - Di 18.10.05 11:02
Hallo :wink2:
Die Listview hat den Ruf das sie sehr langsam ist. Rufst du ganz am Anfang bevor du die Items hinzufügst auch BeginUpdate auf und am Ende EndUpdate?
Lg Martin
Chatfix - Di 18.10.05 11:29
Also ich habe das ListView extra auf Visible := False gesetzt.
BeginUpdate und EndUpdate gibts bei mir nicht :?:
Martin1966 - Di 18.10.05 11:46
Chatfix hat folgendes geschrieben: |
| BeginUpdate und EndUpdate gibts bei mir nicht :?: |
Das sind Methoden der Eigenschaft
Items.
alzaimar - Di 18.10.05 12:11
Ich würde den Virtualmode der TListView nehmen.
Im Inspector
Delphi-Quelltext
1:
| ListView.OwnerData := True; -- Delphi OH verwenden!!! |
Zur Laufzeit (nach dem LAden des Arrays)
Delphi-Quelltext
1:
| ListView.Items.Count := Length (MyArray); |
und den Event ListView.OnData setzen, z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm2.ListViewData(Sender: TObject; Item: TListItem); begin Item.Caption := MyRecord [Item.Index].Title; Item.SubItems.add (MyRecord [Item.Index].MoreText); Item.SubItems.add (MyRecord [Item.Index].AndMoreText); end; |
Damit kannst Du dann auch 100.000.000 Items in 1ms darstellen.
Bei 10000 Items könnte BeginUpdate/EndUpdate auch reichen. Aber der VirtualMode ist so elegant, weil z.B. die Darstellung sofort mit Änderungen in deinen Daten synchronisiert ist.
Martin1966 - Di 18.10.05 12:15
Wow... danke für den Hinweis. Ich wusste gar nicht das es diese Eigenschaft gibt. ;-)
Chatfix - Di 18.10.05 12:39
OK Vielen Dank, ich werde es mal ausprobieren!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!