Unterprogramme



  • Hallo,

    ich habe in meinem Programm einige Buttons die bis auf einen Wert immer das gleiche ausführen. Da ich aber nicht auf jeden Button den kompletten Quelltext hinterlegen möchte, wollte ich fragen wie ich eine art Unterprogramm schreibe.
    Das heißt wenn ich auf den ersten Button klicke wird ein Wert z.B int x=1 gesetzt und der restliche Quelltext wird danach ausgeführt.
    Wenn ich auf den zweiten Button klicke dann wird int x=2 gesetzt usw.

    Kann mir jemand sagen wie ich sowas mache???

    Danke



  • Na ja, wenns nur drum geht den Wert x zu verändern, solltest dus vllt. einfach ausschreiben ...

    ansonsten schreibt man Funktionen

    <VariablenTyp (wenn keiner dann void)> <Funktionsname>(<VariablenTyp (wenn keiner dann void)>{

    //Anweisungen

    }

    Bsp.:

    void Funktion1(void){
       if (x == 1){
           Label1->Caption = "OK";
       }
    }
    

    Gruß
    MWJK



  • Hallo

    @ MWJK : Ich glaube nicht, das deine Antwort zu der Frage passt.

    @Wolgang : Schau in die FAQ hier im Builder-Forum, in den Abschnitt Komponenten benutzen.

    bis bald
    akari



  • Und wie führe ich dann dieses void Funktion1 dann durch klick auf einen anderen Button aus???



  • Hallo

    ALso doch nochmal durchkauen : Dafür gibt es die Eigenschaft TButton::Tag. Dem kannst du sowuohl zur Entwurfszeit als auch zur Laufzeit einen beliebigen Wert zwueisen, mit dem du den Button später wieder identifizieren kannst.

    Button1->Tag = 1;
    Button2->Tag = 2;
    Button3->Tag = 3;
    

    Nun erstellst du genaue eine Methode für den OnClick-Event der betreffenden Buttons. Alle Buttons sollen also diesselbe Methode aufrufen.
    Jetzt must du nur noch im dem Event den auslösenden Button identifizieren

    void __fastcall TForm1::ButtonOnClick(TObject *Sender)
    {
      TButton* Pressed = static_cast<TButton*>(Sender);
      ShowMessage(Pressed->Tag);
    }
    

    bis bald
    akari



  • akari schrieb:

    Hallo

    @ MWJK : Ich glaube nicht, das deine Antwort zu der Frage passt.

    @Wolgang : Schau in die FAQ hier im Builder-Forum, in den Abschnitt Komponenten benutzen.

    bis bald
    akari

    Hallo

    wieso passt denn die Antwort nicht? Dachte es wäre so gemeint.

    Gruß MWJK



  • Er muss/will ja wissen, welches Object die Funktion aufgerufen hat; und das funktioniert halt mit Sender.

    Grüsse



  • MWJK schrieb:

    akari schrieb:

    Hallo

    @ MWJK : Ich glaube nicht, das deine Antwort zu der Frage passt.

    @Wolgang : Schau in die FAQ hier im Builder-Forum, in den Abschnitt Komponenten benutzen.

    bis bald
    akari

    Hallo

    wieso passt denn die Antwort nicht? Dachte es wäre so gemeint.

    Gruß MWJK

    Dann vergleich doch einfach meinen geposteten Code und deinen.
    Ich wollte eben das klarstellen, bevor Wolfgang in eine falsche Richtung rennt.
    Das solltest du nicht als persönlichen Angriff auffassen.

    bis bald
    akari


Anmelden zum Antworten