RadioButtons



  • Nabend allerseits 🙂
    Komischerweise funzt meine Registrierung nicht, aber ich hoff, dass ihr mir trotzdem weiterhelfen werdet 😉

    Ich 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 !


Anmelden zum Antworten