@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...