Mehrere Buttons, welcher wurde geklickt?



  • Ich hab da n Problem und ich frag mich ob des irgendwie einfach zu lösen ist. Also ich arbeite mit dem C++ Borland Builder und hab ca. 15 Buttons erstellt. Beim OnKlick Ereignis jedes Buttons wird Button1Klick ausgeführt.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    Form2->Show();
    
    }
    

    bedeutet er zeigt Form2 immer, egal welcher Button geklickt wurde.
    Nun zum Problem:
    In Form2 kann man zwischen verschiedenen Namen wählen. Der gewählte Name soll dann auf den geklickten Button geschrieben werden. also etwa so :

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    Form2->Show();
    GEKLICKTERBUTTON->Caption = Form2->name;
    }
    

    meine Frage : wie kann ich herausfinden welcher Button geklickt wurde?

    MfG DR



  • andere Funktionen mit dne anderen Buttons verknüpfen



  • xxxxxxxxxxxxxxxx schrieb:

    andere Funktionen mit dne anderen Buttons verknüpfen

    dann hab ich 15 funktionen die einfach nur den String name an den jeweiligen Button übergeben. des sollt doch auch einfacher gehen, oder?



  • Ist das VCL? Kenn mich damit nicht aus, aber ich würde stark davon ausgehen, dass der gedrückte Button im Paramter "TObject *Sender" enthalten ist. Muss halt noch gecastet werden.



  • anonymus schrieb:

    Ist das VCL? Kenn mich damit nicht aus, aber ich würde stark davon ausgehen, dass der gedrückte Button im Paramter "TObject *Sender" enthalten ist. Muss halt noch gecastet werden.

    Ja das dacht ich mir auch, aber wie cast ich den?? never heard of.



  • Imho sollte das so gehen:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     const TButton * const tmp (Sender);
    }
    

    Ob ein cast ausreicht kann ich dir nicht sagen - aber imho sollte das ein klick auf "Hilfe" recht schnell klarmachen - ansonsten mal im VCL-Forum (oder gleich bcb, falls es da eins gibt) fragen...

    Kann dir allerdings nicht sagen, ob es auch wirklich funtzt, aber so in der art hab ich das gerade verstanden ^^

    bb



  • DeadRabbid schrieb:

    anonymus schrieb:

    Ist das VCL? Kenn mich damit nicht aus, aber ich würde stark davon ausgehen, dass der gedrückte Button im Paramter "TObject *Sender" enthalten ist. Muss halt noch gecastet werden.

    Ja das dacht ich mir auch, aber wie cast ich den?? never heard of.

    Wie wäre erst mal mit den Grundlagen, vor du irgendwas mit GUI machst.



  • Dieser Thread wurde von Moderator/in Phoemuex aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      ((TButton*)Sender)->Caption = Form2->Caption;
      Form2->Show();
    
    }
    


  • Rostfrei[] schrieb:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      ((TButton*)Sender)->Caption = Form2->Caption;
      Form2->Show();
    
    }
    

    danke 🙂

    und ja ich werde mich mehr mit den grundlagen beschäftigern 😉


Anmelden zum Antworten