TListBox.Items[] hat zwar den Datentyp
TStrings, ist aber nicht von
TStringList abgeleitet
sondern gehört zur Klasse
TListBoxStrings !!!
Hier ein kleiner Ausschnitt aus
Unit StdCtrls:
Delphi-Quellcode:
TListBoxStrings = class(TStrings)
private
ListBox: TCustomListBox;
protected
procedure Put(Index: Integer; const S: string); override;
function Get(Index: Integer): string; override;
Die Methoden
Get und
Put sind
um Welten langsamer als TStringList.Get/Put.
Da nutzt auch BeginUpdate nicht viel!!
Also geht der WorkAround so:
Alle Items auf ein TStringList-Objekt kopieren, auf dieser StringListe arbeiten und am Ende zurückkopieren.
Delphi-Quellcode:
liste := TStringList.Create;
liste.Assign(ListBox1.Items);
// auf Liste arbeiten
....
// und zurück
ListBox1.Items := liste;
liste.Free;