1 1 Stimme

Delphi/Lazarus: Wieso benutzt man BeginUpdate und EndUpdate?

Frage von Gast | 12.01.2016 um 18:31 Uhr

Ich habe nun schon öfters Code-Beispiele in Delphi oder Lazarus Programmen gesehen, in denen die Befehle BeginUpdate und EndUpdate verwendet werden. Zum Beispiel beim Befüllen einer ListBox oder ListView mit Items, aber auch bei einem Memo.

Kann mir jemand erklären, wieso das nötig ist und so oft verwendet wird? Es funktioniert ja auch ohne und das Programm weiß doch dass ein neues Item kommt. Wieso muss man es dann explizit mit BeginUpdate ankündigen und mit EndUpdate abschließen?

AntwortenPositivNegativ

Delphianer

Profil anzeigen | Nachricht
Avatar
0Beste Antwort
0 Stimmen

BeginUpdate und EndUpdate werden nicht dazu verwendet, den Vorgang des Hinzufügung "anzukündigen" oder "abzuschließen". Vielmehr wirken sich die beiden Befehle auf die Verhaltensweise des Controls aus, dessen Einträge man verwendet.

Normalerweise wird die ListBox, die ListView oder das Memo-Feld nach jedem Hinzufügen eines Items upgedatet und neu gezeichnet. Gerade bei einer großen Menge von neuen Einträgen kann das sehr lange dauern (das Neu-Zeichnen dauert viel länger als das Hinzufügen).

Aus diesem Grund gibt es die Befehle BeginUpdate und EndUpdate. BeginUpdate sagt dem Control, dass es aufhören soll, sich neu zu zeichnen. Neu gezeichnet wird erst wieder, wenn EndUpdate aufgerufen wurde. In der Zwischenzeit, zwischen diesen beiden Befehlen, kann man die ListBox, die ListView oder auch das Memo-Feld beliebig und schnell bearbeiten, neue Items hinzufügen oder löschen ohne das zeitraubend neu gezeichnet wird.
12.01.2016 um 21:54 Uhr

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.