![]() |
Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Hallo zusammen,
ich verwende eine Listview welche schon mal einige tausend Datensätze enthalten kann. Die Datensätze werden beim wechseln von TabPage1 auf TabPage2 generiert und die Listview zeígt diese dann an. Wenn ich wieder auf Tab1 wechsel wird der Inhalt der Listview mit Clear gelöscht. Das dauert schon mal einige Sekunden... Gibt es hierfür eine schnellere Methoden? Danke schon mal vorab! |
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Hast du die Anpassung der Anzeige währrend des Löschvorgangs abgeschaltet?
|
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
ich habe in ComCtrls.pas gesehen, dass beim Clear schon ein BeginUpdate/EndUpdate ausgeführt wird.
Oder meinst du was ganz anderes? |
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Nein, das habe ich gemeint.
|
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Hallo
wenn das löschen schon so lange dauert, was meinst Du, wielange dann das Erstellen dauert ;-). wenn Du wirklich tausende anzeigst, wird das ganz schnell ganz langsam. Hast Du Dir schonmal den virtuellen Modus des Listviews angeschaut? Damit wird beides um Einiges schneller. Gruß Frank |
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Hallo Frank,
ich habe mich damals für die Listview entschieden, weil ich schnell zum Ergebnis kam (benötigt wurden Chekcboxen und mehrere Spalten). Im Moment scheue ich mich auch mich in Virtual Treeview einzuarbeiten. :oops: Das man eine Listview in den virtuellen Modus setzen kann ist mir neu. Wie geht das? Bei einer Listbox z.B. kenne ich das über die Eigenschaft Style. Aber bei einer Listview? Edit: Habe es gerade gefunden... Virtueller Modus wird über OwnerData aktiviert. Ich teste das ganze mal. Schon mal Danke an Euch beiden für die Antworten! |
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Liste der Anhänge anzeigen (Anzahl: 1)
Nimm doch einfach den VirtualMode (OwnerData=True), dann kannst Du 100.000.000.000 Einträge haben und sowohl der Aufbau als auch das Clear geht in 0.01ns (geschätzt)
|
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Wobei ich da eine VirtualStringTree besser finde, die kann viel mehr. Und ist auch nicht schwerer zu benutzen.
Delphi-Quellcode:
Das sollte alles gewesen sein, so aus dem Kopf geschrieben...
type
// Die Datenklasse TMyData = class private public property FirstColumnData: string ... end; // Die Liste der Daten TMyDataList = class(TObjectList<TMyData>); // initialisieren vstListDisplay.NodeDataSize := SizeOf(TMyData); MyDataList := TMyDataList.Create(True); // Neuen Knoten erzeugen MyData := TMyData.Create; MyData.FirstColumnData := ...; MyDataList.Add(MyData); vstListDisplay.AddChild(nil, MyData); // vstListDisplay.OnGetText implementieren case Column of 0: CellText := TMyData(vstListDisplay.GetNodeData(Node)^).FirstColumnData; ... |
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Stümmt, ich sehe in deinem Code aber nicht, wo auf die Liste verwiesen wird, oder wie ich auf den x.ten Eintrag komme.
Außerdem dachte ich immer, die Virtual TreeList arbeitet mit Records. |
AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 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 by Thomas Breitkreuz