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ändert

    bis 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


Anmelden zum Antworten