Buttonbeschriftung ändern



  • Hallo,

    ich hab glaub ne eher einfache Frage und zwar:

    Wie ändere ich die Beschriftung eines Button?

    Also ich bastle mir nen Button, nenne ihn 1 (Caption)
    der Name des Button sei Button1.
    Jetzt möcht ich, dass sich die Beschriftung des Buttons von eins auf 2
    ändert, wenn ich draufklicke(also, wenn ich das Programm ausführe).
    Wenn ich dann erneut draufclicke soll aus der 2 wieder ne 1 werden.

    Könnte mir jemand ein Beispiel posten?
    Ich stelle mir das ungefähr so vor, nur so einfach is es natürlich nicht
    soll nur ein Anhaltspunkt sein.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    if(Button1->Caption == "1"){
    Button1->Caption="2";
    
    }
    if( Button1->Caption == "2"){
    Button1->Caption="1";
    }
    }
    

    MFG
    Thunder_08



  • Das ist so einfach, du hast nur das else vergessen.



  • Weiß nicht ob du sowas meinst:

    int Modus;
    
    if (Modus)
      {
        Button1->Caption ="1";
    
      }
      else
      {
        Button1->Caption ="2";
      }
      Modus = !Modus;
    

    Oder deinen Code:

    if(Button1->Caption == "1"){
    Button1->Caption="2";
    }
    else{
    Button1->Caption="1";
    }
    

    MFG Fregger



  • Danke schön euch beiden!

    Es funktioniert, schön wenn auch mal etwas einfach ist...

    MFG
    Thunder_08



  • Button1->Tag = !(bool) Button1->Tag;
    Button1->Caption = Button1->Tag + 1;
    

    Ist auch eine Möglichkeit. Entpricht der Version mit Modus, jedoch ohne eine globale Variable zu verwenden, sondern unter Verwendung des freien Tags.



  • Das funktioniert natürlich nur in dem speziellen Fall, dass die Caption tatsächlich aus einer von zwei aufeinanderfolgenden Zahlen bestehen soll. Und da geht es dann auch noch kürzer:

    Button1->Tag ^= 1;
    Button1->Caption = Button1->Tag + 1;
    

    Wenn's statt 1/2 auch 0/1 sein darf dann reicht sogar eine Anweisung.

    Button1->Caption = Button1->Tag ^= 1;
    


  • 👍


Anmelden zum Antworten