AGB  ·  Datenschutz  ·  Impressum  







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

TListview im Virtual Modus

Ein Thema von Zodi · begonnen am 26. Apr 2020 · letzter Beitrag vom 28. Apr 2020
Antwort Antwort
Benutzerbild von Zodi
Zodi

Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#1

TListview im Virtual Modus

  Alt 26. Apr 2020, 17:22
Hi Delphianer

Ich befülle eine Lsitview mit ca 1000 Zeilen nun ist es sehr langsam. Ich habe gelesen das man vor dem befüllen ein BeginUpdate und danach ein EndUpdate setzen soll.
Nun ist es aber trotzdem noch langsam.
Danach hab ich bisschen gegoogelt und gelesen man könne ne Listview im VirtualModus verwenden indem man OwnerData auf True setzt.
Leider wird die Listview jetzt aber nicht mehr befüllt.

So hab ich es bisher gemacht mit dem Button Click.

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Li : TListItem;

begin
   Li := Listview1.Items.Add;
   Li.Caption := 'Text Spalte 1';
   Li.SubItems.Add('Text Spalte 2');
   Li.SubItems.Add('Text Spalte 3');
   Li.SubItems.Add('Text Spalte 4');

   listview1.Items.b
end;
wie muss ich das genau bewerkstelligen mit dem OwnerData damit das funktioniert?

Grüsse Zodi
Pascal
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: TListview im Virtual Modus

  Alt 26. Apr 2020, 17:23
Aktuell schreibst du die Daten direkt in die ListView. Eine virtuelle Liste lebt aber davon, dass die Daten in einer extra Datenstruktur abgelegt werden. Also beispielsweise eine Klasse und jede Instanz davon in eine Liste. Und an dieser Liste bedient sich dann die virtuelle ListView.
  Mit Zitat antworten Zitat
Benutzerbild von Zodi
Zodi

Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#3

AW: TListview im Virtual Modus

  Alt 26. Apr 2020, 17:37
Hat wer ein beispiel ich bin noch Neuling.
Hab schon gegoogelt aber nichts gefunden was ich verstanden habe.
Pascal
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.108 Beiträge
 
Delphi 2009 Professional
 
#4

AW: TListview im Virtual Modus

  Alt 26. Apr 2020, 22:44
Dass das ListView so lahm ist, liegt auch stark an Delphis extrem schlechter Umsetzung der TSubItems mit einem TStrings-Erben.
Ich hab mir mal irgendwann einen TListItem-Erben geschrieben und einen dazugehörigen TSubItems-Erben, der alle Schreibzugriffe direkt an Windows weitergibt ohne sie selbst zu speichern. Man kann zwar nicht mehr lesend auf TListItem.SubItems.Strings[] zugreifen (braucht man oft auch nicht, könnte man aber threoretisch auch über WinAPI-Calls realisieren), dafür läuft das um ein Vielfaches schneller.

Falls da Interesse besteht, kann ich das mal hochladen. Eine brauchbare Lösung zu TListGroups fehlt mir aber noch.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: TListview im Virtual Modus

  Alt 26. Apr 2020, 23:03
Wäre es nicht einfacher einfach eine Virtual String Tree zu nutzen?
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
900 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TListview im Virtual Modus

  Alt 27. Apr 2020, 08:26
Ich denke auch, dass der Virtual String Tree mittelfristig hier die bessere Lösung wäre. Der erfordert zwar etwas Einarbeitung, aber es sind gute Beispiele dabei, bei denen man "abschreiben" kann. Der ist nicht nur schnell, sondern auch sehr flexibel und hat ne Menge Features, die man nach und nach kennen lernen kann, wenn man möchte.

Mit dem zeige ich auch Listen mit einigen 10.000 Einträgen ohne Probleme an. Das ist natürlich nur dann sinnvoll, wenn darin auch gefiltert werden kann. Dem User einfach nur so lange Listen hinknallen, in denen er dann durch scrollen muss, bringt wenig.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  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 00:46 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