Home » Tipps & Tricks » Komponenten » TStrings » Hinzufügen von Einträgen in Listen beschleunigen
Hinzufügen von Einträgen in Listen beschleunigen
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.