RadioButtons deaktivieren
-
Hallo,
ich habe in meinem Dialog 4 RadioButtons, nach der Auswahl eines Buttons erscheint eine MessageBox und nachdem diese eingeblendet wurde, soll kein Button mehr angewählt sein.
finde nur eine Methode fürs überprüfuen ob Radiobuttonaktiviert ist oder nciht :
CheckedButton = GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4)
aber eine Ähnliche mit SetCeheckedRadioButton finde ich leider nicht
mein Versuch das wie folgt zu machen ging auch nicht :
GetDlgItem(IDC_RADIO1)->
bzw. dort weiß ich nicht die entsprechende Methode.
Zu guter letzt habe ich gedacht es ginge vielleicht so :
m_Antwort1=true; m_Antwort2=true; m_Antwort3=true; m_Antwort4=true; UpdateData(false);
Aber das kann ja auch irgendwie nicht gehen oder ???
Weer kann mir denn mal helfen bitte ...
-
Leg die Buttons in der Taborder hintereinander.
Setz bei dem ersten in den Eigenschaften den Haken "Gruppe".Mach jetzt eine Wertvariable für den ersten mit dem Assistenten.
Wenn du die auf -1 setzt und dann UpdateData(FALSE);, dann ist kein Radiobutton der Gruppe gewählt.
Bei 0 ist es der Erste usw.
-
Wenn ich die aber zur Gruppe machen will, dann kann ich auch mehrere gleichzeitig anwählen, und das will ich nicht.
Aber selbst wenn, ich bekomme ihn dennohc nicht deaktiviert.
Habe den ersten RadioButton angeklickt und gesagt Membervariable hinzufügen.
Habe diese dann m_RadioButtton1 genannt.
Und sage später dann m_RadioButton1 = -1 und dennoch sind alle markiert ??Versteh ich nciht *grübel*
-
Tantor schrieb:
Wenn ich die aber zur Gruppe machen will, dann kann ich auch mehrere gleichzeitig anwählen, und das will ich nicht.
Neee, gerade DANN kann man das NICHT.
Tantor schrieb:
Aber selbst wenn, ich bekomme ihn dennohc nicht deaktiviert.
Habe den ersten RadioButton angeklickt und gesagt Membervariable hinzufügen.
Habe diese dann m_RadioButtton1 genannt.
Und sage später dann m_RadioButton1 = -1 und dennoch sind alle markiert ??Versteh ich nciht *grübel*
Ich auch nicht.
Zeig mal das DoDataExchange des Dialoges.
-
Hallo, also wie gewünscht :
void CTomahawkDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_Fragenbox); } BEGIN_MESSAGE_MAP(CTomahawkDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1) ON_CBN_SELCHANGE(IDC_COMBO1, OnCbnSelchangeCombo1) ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3) END_MESSAGE_MAP() // CTomahawkDlg Meldungshandler
Aber was willst du denn damit
hier ist die Stelle an der was passieren soll :
if ( CheckedButton == IDC_RADIO1 + m_Loesung -1 ) { if ( AufAnhieb == true ) { m_RichtigeAntworten++; } MessageBox("Richtig !!!",0,MB_OK); UncheckButtons(); FillControls(); } else { MessageBox("Falsch !!!",0,MB_OK); AufAnhieb=false; }
void CTomahawkDlg::UncheckButtons(void) { m_RadioButton1=0; }
-
Was ich damit will ist einfach: Über DDX werden die Variablen an die Controls gebunden - das fehlt hier, wie du selber sehen kannst.
Bei mir sieht das an einer Stelle so aus:
void CBestellungDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CBestellungDlg) DDX_Radio(pDX, IDC_RDO_EINGEHEND, m_nRichtung); //}}AFX_DATA_MAP }
Du hast die Variable also nicht richtig angebunden.
Versuch es nochmal. Klassenassistent mit Strg+W aufmachen -> zweiter Tabreiter -> IDC raussuchen und Variable hinzufügen drücken. Name eingeben und OK drücken.Die Variable, die du angelegt hast, scheint eine normale Membervariable ohne weitere Bedeutung zu sein. Eben nur die eine Zeile im Header ohne den Eintrag im DDX.
-
Jetzt gehts
Danke