RadioButtons
-
Nabend allerseits
Komischerweise funzt meine Registrierung nicht, aber ich hoff, dass ihr mir trotzdem weiterhelfen werdetIch soll nen Euroumrechner programmieren. Für jedes Land gibts nen RadioButton. Ich will jetzt einfach mal Probehalber anhand ner Messagebox und einem separaten Button jeweils in der aufpoppenden Messagebox den Namen des Landes ausgeben zu können. Dummerweise will das nicht so richtig und ich bekomm immer nur die MessageBox für das erste Land angezeigt. Egal, ob ich ein anderes Land danach auswähle. Hoffentlich könnt ihr mir helfen und nun der Quellcode.
void CEurorechnerDlg::OnButton1() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen Dialog2 dlg; CButton m_radio1, m_radio2; if(m_radio1.IsDlgButtonChecked) { MessageBox("Deutschland"); } else if(m_radio2.IsDlgButtonChecked) { MessageBox("Österreich"); }
Bitte helfeen
TIA
GAU
-
Du mußt die Radiobuttons doch erst mit einem Wert initialisieren wenn du einfach schreibst CButton m_radio1 stellt dies lediglich ein leeres auf nichts verweißendes button dar.
Wenn du nicht weißt wie man die Werte von Elemten abfragt such mal nach
- Steuerelementvariablen
- DDX / DDV
- UpdateData()
-
Hi,
also bei RadioButtons funktioniert das folgendermaßen.
Der erste einer Gruppe erhält ein Häkchen unter ->Properties:
Group. Alle nachfolgenden gehören zu dieser Gruppe. Davon kann dann nur einer gleichzeitig ausgewählt sein. Der erste bekommt noch eine Variable vom Typ Integer zugewiesen. In der steht dann nach UpdateData(); welcher RadioButton gewählt ist. Und zwar Nullbasierend. d.h. wenn der dritte gewählt ist, steht 2 in der Variablen. So, im Folgenden Beispiel habe ich 4 RadioButtons. Sie haben die IDs: IDC_RDEUTSCHLAND,IDC_ROESTERREICH,IDC_RDAENEMARK,IDC_RUSA. Beim ersten ist "Gruppe" aktiviert. Die Variable heißt: m_iNationalitaet.
Folgendes kommt in die Funktion OnNationalitaet (BN_CLICKED für alle RadioButtons)void CDeinDlg::OnNationalitaet() { UpdateData(); switch(m_iNationalitaet) { case 0: // Deutschland gewählt MessageBox("Deutschland"); break; case 1: // Österreich gewählt MessageBox("Österreich"); break; case 2: // Dänemark gewählt MessageBox("Dänermark"); break; case 3: // USA gewählt MessageBox("USA"); break; } }
So, die Switch-Anweisung testet die Variable m_iNationalitaet auf die entsprechenden Werte und gibt dann die passende MessageBox aus.
Ich hoffe, ich konnte dir damit helfen.
mfg TakeItEasy!
-
Boah..vielen vielen Dank. Das hat alle meine Probleme auf einmal gelöst. Ich hab nicht gewusst, dass man die einzelnen Radiobuttons übern Int mit Switch-Case ansprechen kann.
Nochmals many many Thx !