Es scheint exponentiell von der Anzahl der Elemente der Listbox abzuhängen. Versuch es mal mit Begin/Endupdate, ich habe jetzt dabei eine Geschwindigkeitssteigerung um das 250-fache gemessen :
Code:
Listbox alClient (600x400) mit 1000 Elementen = 5223 ms
ListBox alClient (600x400) mit 2000 Elementen = 28809 ms
ListBox alClient (600x400) mit 2000 Elementen Begin/Endupdate = 109 ms
ListBox alClient (600x400) mit 8000 Elementen Begin/Endupdate = 1704 ms
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var
i : integer;
dtStart : TDateTime;
begin
dtStart := Now;
ListBox1.BeginUpdate;
for i := 0 to 7999 do
ListBox1.Items.Add(Format('%8.8d', [i]));
ShowMessage(Format('%d', [MilliSecondsBetween(Now, dtStart)]));
ListBox1.EndUpdate;
end;
Ich habe aber nur 32bit runtime. Hast Du vielleicht 64 erstellt? Das kann ich bei mir nicht testen.