Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: TStrings (ListBox.Items) ohne ".add" ?

  Alt 29. Nov 2019, 09:25
@hoika, danke für die Info. Gleich gelesen... nur 32767 Items. Zu wenig
Das gilt nur für Windows 95/98/Me!

Folgendes kleine Beispielprogramm füllt die Listbox mit 250000 Einträgen in 20 ms. Ein nicht-virtuelles Listbox1.Items.Add mit BeginUpdate/Endupdate braucht hier 1616 ms.

Faktisch wird beim lbVirtual auch das LB_SETCOUNT benutzt. lbVirtual gibt es auch als lbVirtualOwnerDraw.
Das ist eindeutig die schnellste Variante.

Und wenn man statt

"FListBox1Items.Add(I.ToString);"

einfach nur

"FListBox1Items.Add('');"

nutzt, sind es nur ca. 7 ms...

Übrigens gibt es wohl tatsächlich Probleme mit dem Scrollbalken, wenn Über ca. 60.000 Zeilen hinaus gescrollt werden soll.

Für die Anzeige so vieler Elemente kann man aber z.B. ein StringGrid nehmen, das aber nicht selber die Daten hält, sondern nur im DrawEvent auf die passenden Daten zugreift, die gerade auf dem Bildschirm angezeigt werden sollen. Da gibt es keine Probleme...
  Mit Zitat antworten Zitat