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.