Hinzufügen von Einträgen in Listen beschleunigen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Möchten Sie viele Einträge einer grafischen Liste, beispielsweise TListbox hinzufügen, kann dies mitunter recht lange dauern. Das liegt daran, dass die grafische Ausgabe nach jedem Hinzufügen neu gezeichnet wird und dies kostet Zeit.Probieren Sie es aus:
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I:=1 to 30000 do
Listbox1.Items.Add(IntToStr(I));
end;
Es muss also möglich sein, das ständige Neuzeichnen zu verhinden. Dazu wurden bereits in TStrings die Methoden BeginUpdate und EndUpdate implementiert. BeginUpdate leitet eine umfangreiche Aktualisierung der Liste ein - die Ausgabe wird nicht neugezeichnet. Erst mit dem Aufruf von EndUpdate wird diese Sperre wieder aufgehoben:
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
Listbox1.Items.BeginUpdate;
try
for I:=1 to 30000 do
Listbox1.Items.Add(IntToStr(I));
finally
Listbox1.Items.EndUpdate;
end;
end;
Hinweis: Beachten Sie, dass Sie für jeden Aufruf von BeginUpdate später ein EndUpdate aufrufen müssen, um die Sperrung vollständig aufzuheben.