ComboBox, Einträge abfragen
-
Hallo,
ich habe kleine Schwierigkeiten mit der "ComboBox". In meinem Test habe Ich eine ComboBox mit 3 Einträgen bestückt (Test1, Tes2 und Test3).
Nun möchte Ich wenn "Test1" ausgewählt wird, soll "Label1" "Herzlichen" heißen
und wenn "Test2" ausgewählt wird, soll "Label2" "Glückwunsch" heißen.
Wenn aber Test3 ausgewählt wird sollen sich beide Labels ändern.void __fastcall TForm1::FormCreate(TObject *Sender) { ComboBox1->Items->Add("Test1"); ComboBox1->Items->Add("Test2"); ComboBox1->Items->Add("Test3"); } //--------------------------------------------------------------------------- void __fastcall TForm1::ComboBox1Change(TObject *Sender) { if (ComboBox1->Items->Strings[ComboBox1->ItemIndex] == "Test1"); Label1->Caption = "Herzlichen"; if (ComboBox1->Items->Strings[ComboBox1->ItemIndex] == "Test2"); Label2->Caption = "Glückwunsch"; if (ComboBox1->Items->Strings[ComboBox1->ItemIndex] == "Test3"); Label1->Caption = "Herzlichen"; Label2->Caption = "Glückwunsch"; } //---------------------------------------------------------------------------Dieser kleine Programmcode habe Ich mir zusammengebastelt mit jenen Kenntnisse die ein Anfänger besitzt :). Wenn Ich z.B. "Test1" auswähle, werden beide Labels geändert, was Ich nicht möchte.
-----------------------------------------------------------------------------
Im Internet habe Ich ein Beispiel gefunden, in der "case" verwendet wird.
Jediglich folgt ein Fehler, wenn Ich dieses Bsp. nachmache und es heißt
"case-Maske außerhalb der switch-Anweisung"In der Programmhilfe kommt nur:
__property bool Selected[int Index] = {read=GetSelected, write=SetSelected};was aber nur bei der ListBox geht.
Ich hoffe ihr versteht mein Problem und könnt mir helfen

Mfg MHR
-
klar, schau dir einfach in der BCB-Hilfe das Beispiel zu "if, else" an
dein Fehler sind der Syntax von If-Abfragen und die Klammerung[Edit1] natürlich hilft auch Debuggen
hier noch etwas zur Hilfe[Edit2]das switch geht auch mit dem ItemIndex
-
Hallo
du hast die Syntax für if noch nicht verstanden
if (ComboBox1->Items->Strings[ComboBox1->ItemIndex] == "Test1") // Kein Semikolon Label1->Caption = "Herzlichen"; if (ComboBox1->Items->Strings[ComboBox1->ItemIndex] == "Test2") // Kein Semikolon Label2->Caption = "Glückwunsch"; if (ComboBox1->Items->Strings[ComboBox1->ItemIndex] == "Test3") // Kein Semikolon { // Bei mehreren Anweisungen must du einen neuen Codeblock öffnen Label1->Caption = "Herzlichen"; Label2->Caption = "Glückwunsch"; }Das mit coase geht auch, aber nur bei Integralen Variablentypen (also nicht bei AnsiString, sondern nur bei int). Deshalb must du die Eigenschaft Selected anwenden.
switch (ComboBox1->ItemIndex) { case 0 : Label1->Caption = "Herzlichen"; break; case 1 : Label2->Caption = "Glückwunsch"; break; case 2 : Label1->Caption = "Herzlichen"; Label2->Caption = "Glückwunsch"; break; }/Edit : bin doch zu langsam...
und Selected in ItemIndex geändertbis bald
akari
-
@Akari
bei TComboBox gibts kein Selected
-
danke für die schnellen Antworten.
natürlich bin Ich noch nicht der Profi in der Geschichte
aber man versucht sein möglichstes. Dann werde ich mir nochmal das Kapitel zu "if, else..." anschaun 
danke MHR