Eine Combobox in Delphi 5

Hallo,

ich habe eine Comobox erstellt, damit der User keinen eigenen Eingaben machen kann mit Style := csDropDownList.

Stosse aber jetzt auf das Problem das der User IMMER etwas wählen
muß, da das Feld bei Programmstart leer ist. Ich würde aber gerne haben, das ich etwas Vorgebe, sowie es mit Combobox.text := ‚bla bla‘ eigentlich ja auch geht, aber halt nicht, wenn ich Style auf csDropDownList habe. Dann steht das Feld immer leer. :frowning:

Wer weiß rat?

Danke und Gruß
Mercutio

PS: hab das letzte mal mit TurboPascal unter Dos Programmiert, das ist jetzt fast 10 Jahre her, hat sich ja einiges geändert seitdem. :smile:

Gaaaanz einfach :smiley:
Hi,
gehe im Objektinspektor auf die Eigenschaft „ItemIndex“ und setze sie z.b. auf 0. (Standardmäßig steht dort glaubich -1)
So wird der erste Eintrag in der Liste gewählt (Zählung beginnt bei Null, wie du sicher weißt)

Chris

Hallo,

gehe im Objektinspektor auf die Eigenschaft „ItemIndex“ und
setze sie z.b. auf 0. (Standardmäßig steht dort glaubich -1)
So wird der erste Eintrag in der Liste gewählt (Zählung
beginnt bei Null, wie du sicher weißt)

Klingt wirklich ganz einfach. Nur ein Problem, bei mir steht da kein ItemIndex, was nun?

Ich hab das jetzt einfach hier reingeschrieben:

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.ItemIndex := 0;
end;

Das klappt auch, aber ist das korrektes Programmieren!?

gruß
Mercutio

Hallo…

So kann man das durchaus machen. Ich glaube die Property (Eigenschaft) ItemIndex war in Delphi 5 noch nicht als public deklariert. Deshalb erscheint das nicht im Objektinspektor.

Sinnvoller wäre allerdings diese Variante:

procedure TForm1.FormCreate(Sender: TObject);
begin
 if ComboBox1.ItemIndex \> -1 then
 ComboBox1.ItemIndex := 0;
end;

Sonst bekommst Du eine Fehlermeldung wenn die DropDownliste aus irgendeinem Grund leer sein sollte.

Gruß
Thorsten

Hallo Mercutio,

Ich hab das jetzt einfach hier reingeschrieben:

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.ItemIndex := 0;
end;

Das klappt auch, aber ist das korrektes Programmieren!?

ja! Der FormCreate-Handler ist genau der richtige Ort für diese Anweisung. Wenn beim Programmstart der dritte Eintrag aktiviert sein soll, dann schreibst Du entsprechend „ComboBox1.ItemIndex := 2“ usw.

Gruß
Martin

Hallo !

Sinnvoller wäre allerdings diese Variante:

procedure TForm1.FormCreate(Sender: TObject);
begin
if ComboBox1.ItemIndex > -1 then

if ComboBox1.Items.Count > 0 then

ComboBox1.ItemIndex := 0;
end;

…so ist besser :smile:
ItemIndex ist im Fall „nichts ausgewählt“ -1, und hat nichts mit der Anzahl der Einträge zu tun…

Alexander

Stimmt… :smile:
Hallo…

Das sieht man mal wieder, dass man selbst nach inzwischen schon 8 Jahren Routine immer noch manchmal Anfängerfehler macht… :smile:

Danke
Thorsten

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]