Wirklich SO viel dort anzeigen?
Erstmal BeginUpdate
Delphi-Quellcode:
varList.Items.BeginUpdate;
try
varList.Items.Clear;
for i := 1 to 500 do
varList.Add('<Var ' + IntToStr(i) + '>');
finally
varList.Items.EndUpdate;
end;
Oder "in einem Schwups" zuweisen.
Delphi-Quellcode:
for i := 1 to 500 do
stringList.Add('<Var ' + IntToStr(i) + '>');
{ besser nicht, wenn es sehr viel ist ... die ComboBox wäre schnell, aber es wird unschön erst ein langer String gebaut, der dann wieder zerlegt und dann in die Items übergeben }
//varList.Items.Text := stringList.Text; // PS: die nutzen da drin auch BeginUpdate ;)
// oder
varList.Items.Clear;
varList.Items.AddStrings(stringList); // PS: die nutzen da drin auch BeginUpdate ;)
Delphi-Quellcode:
SetLength(arrList, 500);
for i := 1 to 500 do
arrList[i - 1] := '<Var ' + IntToStr(i) + '>';
varList.Items.Clear;
varList.Items.AddStrings(arrList); // PS: die nutzen da drin auch BeginUpdate ;)
PS: Eine TComboBoxEx kann auch nachträglich befüllt werden.
Bei der TComboBox wird zu Beginn des OnDropDown eine Kopie im DropDown-Fenster geladen/angezeigt,
aber bei TComboBoxEx lässt sich während und auch nach dem Öffnen diese Liste noch bearbeiten.
Dort wäre es z.B. möglich erstmal nur einen Teil zu laden
und wenn der Fokus auf dem letzten Item steht, den Rest, bzw. den nächsten Teil zu laden.
Ich hab mal eine ComboBox gebaut, welche Ports auflistet. (hier war nicht die ComboBox selbst das Langsame, sondern die Datenquelle)
Die wird erst gefüllt/gesucht, wenn der DropDown auf geht. (also wenn nicht nötig, wird auch nicht gesucht)
Und wenn es bei der Suche hängt, dann ist schonmal der bereits gesuchte Teil angezeigt, weiteres taucht nach und nach auf. (die Suche läuft in Threads und beendet sich beim OnCloseUp)
Von DevExpress und Anderen gibt es ComboBoxen, welche einen Filter bieten,
also egal wie viele Zeilen/Datensätze es sind, da wird NIEMALS alles angezeigt. (kann also auch nicht langsam werden)
* z.B. nur die ersten 50
* und via Filter die Auswahl einschränken (davon auch nur die ersten 50)
* auch wenn nicht immer alles da ist, kommt man dennoch an jeden Eintrag dran
Ein Therapeut entspricht 1024 Gigapeut.