![]() |
AW: TStrings (ListBox.Items) ohne ".add" ?
Zitat:
|
AW: TStrings (ListBox.Items) ohne ".add" ?
Zitat:
Für uns hat da immer noch das gute alte ClientDataSet gereicht. ---- (*) "Kam der Kunde nicht aus Koblenz? Hat den nicht die Müller bearbeitet? War der Vorgang nicht 2014 im Mai?" man kennt das... |
AW: TStrings (ListBox.Items) ohne ".add" ?
Hallo,
Zitat:
|
AW: TStrings (ListBox.Items) ohne ".add" ?
Zitat:
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... |
AW: TStrings (ListBox.Items) ohne ".add" ?
Da ja bekannt ist wie viele Elemente eingefügt werden sollen, könnte es etwas bringen vorher Items.Capacity zu setzen (bei nicht virtueller Listbox).
Habe leider gerade kein Delphi zur Hand um das mal testen zu können. Ciao Heza |
AW: TStrings (ListBox.Items) ohne ".add" ?
Zitat:
Diese TListBoxStrings-Klasse hat nur wenig mit einer TStringList gemein, was die üblichen Optimierungstechniken in der Regel scheitern lässt. Lediglich BeginUpdate/EndUpdate führt den entsprechenden WM_SETREDRAW Aufruf durch. Deswegen ist Assign auch langsamer als eine Folge von Add-Aufrufen, da bei Assign nach jedem Add auch noch ein PutObject folgt, was wiederum eine LB_SETITEMDATA Message sendet. |
AW: TStrings (ListBox.Items) ohne ".add" ?
Listbox.Items.Text := #13#10#13#10#13#10#13#10#13#10#13#10#13#10#13#10#1 3#10#13#10;
So hast du 10 Leerzeilen. |
AW: TStrings (ListBox.Items) ohne ".add" ?
Zitat:
|
AW: TStrings (ListBox.Items) ohne ".add" ?
Wichtig wäre noch zu erwähnen, wenn man nun das "lbVirtualOwnerDraw" und "LB_SETCOUNT" nutzt, dass man (wenn man die Anzahl braucht) nicht "ListBox.Count", sondern "ListBox.Items.Count" nutzt. Mir ist das zufällig aufgefallen, weil eine Sache bei mir nicht mehr funktionierte und gesehen habe, dass ich "ListBox.Count" angegeben hatte und sonst überall "ListBox.Items.Count". Nur mal so zur Info.
|
AW: TStrings (ListBox.Items) ohne ".add" ?
Statt solcher Tricks die betriebssystemabhängig sind würde ich ganz einfach VirtualStringTree nutzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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-2025 by Thomas Breitkreuz