AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?
Thema durchsuchen
Ansicht
Themen-Optionen

Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?

Ein Thema von juergen · begonnen am 2. Jul 2011 · letzter Beitrag vom 3. Jul 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?

  Alt 2. Jul 2011, 21:30
Es wäre auch zu überlegen, ob man die Datenmenge nicht reduziert. Was will der Benutzer mit einigen tausend Einträgen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?

  Alt 2. Jul 2011, 22:15
Hallo zusammen,

vielen Dank erst einmal für Eure netten Antworten!
Das "Problem": ich benötige Checkboxen...und diese stehen in der Listview im virtuellen Modus leider nicht zur Verfügung (laut Hilfe).
Und damit scheint wohl nur noch der VirtualStringTree übrig zu bleiben.
Mit den Delphi Standard Komponeten komme ich so halbwegs zurecht. Ich hatte mir schon einige Male Source vom VirtualStringTree angeschaut, aber nie so richtig verstanden. Ich tue mich da etwas schwer etwas zu kopieren und einzusetzen, wenn ich es nicht verstehe.

Ich werde mal schauen ob ich mit der Listview so "durchkomme", ansonsten muss ich mich wohl doch etwas mit dem VirtualStringTree beschäftigen.

Einen schönen Abend noch!

Edit[roter Kasten]:
@Luckie,
Reduzierung der Datenmengen ist leider nicht möglich. Die Datenmengen sind nicht konstant, sondern sehr unterschiedlich. Ich gehe aber vom Worst Case aus und das sind lt. Kundenmkomentar bis zu 20.000 Datensätze. Wobei ich hier bei mir mit knapp 7000 Datensätze teste.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#13

AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?

  Alt 2. Jul 2011, 22:21
Wenn du die Checkboxen selber zeichnest und die Klicks entsprechend auswertest, dann kannst du auch die Listview im virtuellen Modus verwenden.

PS: VST macht das auch nicht anders.

Das Zeichnen kannste ganz einfach über den ThemeService vom Delphi machen
oder du wendest dich direkt an die WinAPI, um dir die Checkboxen zeichnen zu lassen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.588 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?

  Alt 3. Jul 2011, 00:11
Stümmt, ich sehe in deinem Code aber nicht, wo auf die Liste verwiesen wird, oder wie ich auf den x.ten Eintrag komme.
Der Punkt ist ja, dass du bei der VrtualStringTree nur auf die Objekte in deiner Datenstruktur im Hintergrund verweist (bei meinem Beispiel eine Liste).

Wenn du an einen bestimmten Knoten zu bestimmten Daten heran willst (und nicht nur umgekehrt von einem selektierten Node auf die Daten zugreifen willst), kannst du z.B. einen Pointer auf den Node mit in dein Objekt packen oder ein TDictionary von deinen Objekten auf den Node benutzen.

Außerdem dachte ich immer, die Virtual TreeList arbeitet mit Records.
Welche Daten du da reinpackst, ist egal. In meinem Fall sind es die 4 Byte eines 32-Bit Pointers auf ein Objekt. Stattdessen kann man eben auch einen Record hineinpacken, aber das finde ich unpraktisch...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#15

AW: Listview.Clear dauert zu lange. Gibt es eine schnellere Methode?

  Alt 3. Jul 2011, 00:18
Ich werde mal schauen ob ich mit der Listview so "durchkomme", ansonsten muss ich mich wohl doch etwas mit dem VirtualStringTree beschäftigen.
Etwas schneller als "Clear" ist bei mir der folgende Code. Da kannst du mal schauen, wie sich das bei dir verhält:
Delphi-Quellcode:
uses
  CommCtrl;

// ...

  ListView1.Items.BeginUpdate;
  ListView1.Perform(LVM_DELETEALLITEMS, 0, 0);
  ListView1.Items.EndUpdate;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:47 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