Radiobuttons mit "if-struktur" kombinieren ?!?
-
Hallo,
danke funktioniert! Warum kann man das nicht mit einer Variablen (Funktion) mache bzw. Warum funktioniert das nicht ??
MFG
-
ganz einfach:
da die Statusänderung des RadioButton nicht nur vom eigenen OnClick-Ereignis abhängt hast du eigentlich nur vergessen den Status aller RadioButtons beim Clicken eines RadioButtons zu ändern, z.B.void __fastcall TForm1::RadioButton1Click(TObject *Sender) { Funktion[0] = RadioButton1->Checked; // Umfang [b]Funktion[1] = RadioButton2->Checked;[/b] } void __fastcall TForm1::RadioButton2Click(TObject *Sender) { [b]Funktion[0] = RadioButton1->Checked;[/b] Funktion[1] = RadioButton2->Checked; // Flächeninhalt }aber wie gesagt, die RadioGroup eignet sich für so etwas besser
-
Hallo,
danke! Ich hab da nochmal eine Bitte und zwar soll der Benutzer verschiedene "Rechenaufgaben" bei dem jeweiligen "MainMenuItem" lösen können!
So habe ich es probiert klappt aber nicht, denn die "Rechenaufgaben" wechseln nicht:
if(K1) // K1 Name des MenuItems { 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; } } if(D1) //D1 Name des MenuItems { if(RadioButton1->Checked) // Umfang { float r = StrToFloatDef(Edit1->Text, 0); // r = Radius (User) String Ergebnis = FloatToStr(2 * r * PI * 3); // Nur zum Test 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 * 3); // Nur zum Test Panel1->Caption = Ergebnis; StatusBar1->Panels->Items[2]->Text = " Flächeninhalt: " + Ergebnis; } }Warum wechseln sich die Formeln nicht ?
MFG
-
Hallo
Du hast nicht beachtet das Linnea
if ... else if ...geschrieben hat. Solche Logikfehler sind übrigens ganz leicht mit dem Debugger zu finden.
/Edit : Bitte benutze beim nächsten mal statt den Code-Tags die C++ Tags beim Posten von C++Quellcode hier im Forum.
bis bald
akari
-
Hallo,
danke! Ob ich jetzt else if oder if schreibe änder sicht an dem oben beschriebenen Problem nichts : ((...
MFG
-
Sankt M. schrieb:
[b]if(K1)[/b] // K1 Name des MenuItems { if(RadioButton1->Checked) // Umfang { //...... } }Warum wechseln sich die Formeln nicht ?
Hier wäre wohl auch am besten auf die OnClick-Ereignisse des Menüs zu reagieren. Die Funktion, die beim jeweiligen Menüeintrag ausgeführt werden soll, wird dann im entsprechenden OnClick-Ereignis des Menüs eingefügt.
-
Hallo,
das steht ja alles in der ButtonClick Methode!
MFG
-
Sankt M. schrieb:
das steht ja alles in der ButtonClick Methode!
Ich meinte die Click Methode auf dem Menüeintrag.
Was für ein Menü meinst du denn? Mit Radiobuttons oder eher am oberen Bildschirmrand?
Oder allgemein, wie sieht die geplante Benutzerführung aus.EDIT:
[b]if(K1)[/b] // K1 Name des MenuItemsWie wird K1 bestückt?
-
Hallo,
ja ich mein das Menu am oberen "Bildschirmrand" (MainMenu)! Ich hab da einzelne Unterpunkte bei einem Item und zwar ist K1 ner Name von Kreis (Unterpunkt). Wenn man jetzt auf diesen Unterpunkt klickt sollen sich die Formeln bzw. die Aufgaben ändern (siehe mein post). Jetzt wollte ich das ganze mit einer if-struktur realisieren, jedoch ändern sich die Formeln nicht...
void __fastcall TForm1::ErgebnisButtonClick(TObject *Sender) { // Kreisberechnung if(K1) // Name von Kreis { 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; } } if(T1) Test - um zu sehen, ob sich was verändert... { if(RadioButton1->Checked) // Umfang { float r = StrToFloatDef(Edit1->Text, 0); // r = Radius (User) String Ergebnis = FloatToStr(2 * r * PI * 3); 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 * 3); Panel1->Caption = Ergebnis; StatusBar1->Panels->Items[2]->Text = " Flächeninhalt: " + Ergebnis; } } }Ich hab echt keinen Plan, wie ich noch machen könnte...
MFG
Sankt M.
-
Ich glaube, dass nur recht wenige Leute (mich ausgeschlossen) sich vorstellen können, was Du programmieren willst. Ein MainMenu, das irgendwie mit der Ereignisbehandlungsroutine eines Buttons in Verbindung steht, mehrere RadioButtons und ein Kreis. Entweder stehe ich gerade sehr auf dem Schlauch, oder Deine Beschreibung ist einfach zu wage, um effektiv helfen zu können.
Warum nutzt Du nicht den Debugger? Schrieb akari bereits...
Warum nutzt Du nicht die Ereignisse des MainMenues und dessen SubItems? Schrieb Fincki bereits...
-
Hallo,
ich will einfach eine oder mehrere "MenuPunkte" (in diesem Fall Kreis (K1) ), die jeweils verschiedene Formeln, wenn sie gedrückt werden, ausführen.
Ich hab versucht das mit einer if-struktur zu realisieren, jedoch wechselt sich das Ergebnis(Formel) nicht.
MFG
-
K1 und T1 sind also TMenuItems? wenn ja dann macht deine If-Abfrage keinen Sinn, da du nur den Zeiger abfragst und der ist ja immer da
Sankt M. schrieb:
Hallo,
ich will einfach eine oder mehrere "MenuPunkte" (in diesem Fall Kreis (K1) ), die jeweils verschiedene Formeln, wenn sie gedrückt werden, ausführen.dafür gibt es die OnClick-Ereignisse der TMenuItems
wenn du allerdings die "ErgebnisButtonClick"-Funktion mit den jeweiligen OnClick-Ereignissen des Menüs/RadioButtons verbunden haben solltest, mußt du den Sender auswerten -> siehe FAQ
-
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