Radiobuttons mit "if-struktur" kombinieren ?!?



  • Hallo,

    wie siehts denn aus wenn ich einfach auf das OnClick ereigniss zugreife ? (D1->OnClick) ; (T1->OnClick) ??

    MFG



  • Sankt M. schrieb:

    Hallo,

    wie siehts denn aus wenn ich einfach auf das OnClick ereigniss zugreife ? (D1->OnClick) ; (T1->OnClick) ??

    MFG

    Um das Ereigniss zu erzeugen klickst du in der IDE auf den Menüeintrag, dann wird automatisch eine Funktion erzeugt:

    void __fastcall TfrmMain::D1Click(TObject *Sender)
    {
    
    }
    //---------------------------------------------------------------------------
    


  • Wie wäre es mit einem Tab-Sheet anstatt einem Menu?



  • void __fastcall TfrmMain::D1Click(TObject *Sender)
    {
    ErgebnisButtonClick (Sender);  
    }
    
    void __fastcall TfrmMain::T1Click(TObject *Sender)
    {
    ErgebnisButtonClick (Sender);  
    }
    

    - "so habe ich es gemacht"... - habe zuvor noch nie sowas gemacht...

    Funktioniert nicht..

    MFG



  • Sankt M. schrieb:

    Funktioniert nicht..

    Hey, klasse Fehlerbeschreibung...



  • @Sankt M.
    das ist soweit ja auch nicht falsch, aber hast du dir den Beitrag in der FAQ schonmal angeschaut? das ist nämlich genau das was du in dem Fall brauchst, wobei hier nicht TButton sondern TMenuItem die gesuchte Klasse ist



  • Hallo,

    danke! Jetzt bekomme ich eine Fehlermeldung ('D1' ist kein Element von 'MenuItem') - Warum ??

    dynamic_cast<TMenuItem*>(Sender)->D1;
    

    MFG



  • du solltest dir wirklich nochmal den FAQ Beitrag durchlesen und dabei dein Gehirn anschalten, außerdem empfehle ich die BCB-Hilfe zu TMenuItem, da dort alle Eigenschaften aufgelistet und beschrieben stehen, z.B. die Eigenschaft Name



  • Ohje....

    void __fastcall TForm1::D1Click(TObject *Sender)
    {
      dynamic_cast<TMenuItem*>(Sender)->Name;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::K1Click(TObject *Sender)
    {
      dynamic_cast<TMenuItem*>(Sender)->Name; 
    }
    

    .. Ich weiss ehrlich nicht wie ich das am besten unterbringen soll ... ?

    Wie bringe ich das jetzt in eine "if-struktur" ?

    MFG



  • oh man, jetzt wir mir das langsam zu blöd hier

    void __fastcall TfrmMain::D1Click(TObject *Sender) 
    { 
    ErgebnisButtonClick (Sender);   
    } 
    void __fastcall TfrmMain::T1Click(TObject *Sender) 
    { 
    ErgebnisButtonClick (Sender);   
    } 
    
    void __fastcall TForm1::ErgebnisButtonClick(TObject *Sender) 
    { 
    TMenuItem *Item = dynamic_cast<TMenuItem*>(Sender);
    if ( !(Item && Item->ClassNameIs("TMenuItem")) ) return;
    if(Item->Name == "K1") 
    { 
    ...
    } 
    else if(Item->Name == "T1")  
    {
    ...
    } 
    }
    


  • Hallo,

    danke funktioniert! Das Problem, das ich jetzt habe ist, dass die "if Anweisungen" in der "if Anweisung" nicht mehr funktionieren. (Das Ergebnis kommt nur durch die Menupunkte (K1 & D1)...

    Die Fett markierte Stelle ist die, die nicht funktioniert (wird nicht ignoriert - passiert überhaupt nichts..)

    [cpp]void __fastcall TForm1::ErgebnisButtonClick(TObject *Sender)
    {
    TMenuItem *Item = dynamic_cast<TMenuItem*>(Sender);
    if ( !(Item && Item->ClassNameIs("TMenuItem")) )
    return;

    // Kreisberechnung
    if(Item->Name == "K1")
    {
    **if(RadioButton1->Checked) // Umfang
    {
    float r = StrToFloatDef(Edit1->Text, 0); // r = Radius (User)
    String Ergebnis = FloatToStr(2 * r * PI);
    Panel1->Caption = Ergebnis;
    StatusBar1->Panels->Items[2]->Text = " Umfang: " + Ergebnis;
    }

    if(RadioButton2->Checked) // Flächeninhalt
    {
    float r = StrToFloatDef(Edit1->Text, 0); // r = Radius (User)
    String Ergebnis = FloatToStr(PI * r * r);
    Panel1->Caption = Ergebnis;
    StatusBar1->Panels->Items[2]->Text = " Flächeninhalt: " + Ergebnis;
    }**}

    }
    else if(Item->Name == "D1")
    {
    **if(RadioButton1->Checked) // Umfang
    {
    float r = StrToFloatDef(Edit1->Text, 0); // r = Radius (User)
    String Ergebnis = FloatToStr(r*r*r); //Nur als Beispiel
    Panel1->Caption = Ergebnis;
    StatusBar1->Panels->Items[2]->Text = " Umfang: " + Ergebnis;
    }

    if(RadioButton2->Checked) // Flächeninhalt
    {
    float r = StrToFloatDef(Edit1->Text, 0); // r = Radius (User)
    String Ergebnis = FloatToStr(PI * r * r) //Nur als Beispiel
    Panel1->Caption = Ergebnis;
    StatusBar1->Panels->Items[2]->Text = " Flächeninhalt: " + Ergebnis;
    }**}
    }
    }[/cpp]

    MFG


Anmelden zum Antworten