Einführung in Radiobuttons gesucht



  • Ich habe Radiobuttons in mein Dialogfeld eingebaut und weiß das diese Gruppiert sind.

    Aber:
    - wie bestimme ich was zu welcher Gruppe gehört?
    - wie greife ich auf die Eigenschaften zu wenn ich keine Variable hinzufügen kann?

    Im Internet konnte ich nur finden wie ich komplett manuell Radiobuttons erstelle - aber das bringt mich nicht weiter wenn ich den Ressourceneditor verwende.

    Matthias


  • Mod

    Eine Gruppe beginnt mit dem ersten Control das den Stil WS_GROUP hat. Es endet mitdem letzten Control im Dialog oder vor dem Control das als nächstes den WS_GROUP Stil hat.
    Die Z-Order bestimmt damit auch die Gruppenzugehörigkeit.





  • (D)Evil schrieb:

    http://www.functionx.com/visualc/controls/radiobutton.htm

    die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.

    Eine für das Gruppen-Radiobutton-Element zugewiesene Variable kann ich auch abfragen und setzen über

    int n=m_WndRadioLinearDb.GetCheck();
    	m_WndRadioLinearDb.SetCheck(BST_UNCHECKED); //BST_CHECKED
    

    damit erfahre ich aber noch immer nichts über die anderen Radiobuttons in derselben Gruppe (für die ich nur eine Variable zuweisen kann, wenn sie Gruppe=True gesetzt haben)

    Ich habe gesehen dass es die Funktion 'GetCheckedRadioButton' gibt, sehe aber nicht wie ich die Anwenden sollte, da die nach nIDFirstButton und nIDLastButton fragt bei denen ich nicht weiß wie ich daran komme.

    int GetCheckedRadioButton(
       int nIDFirstButton,
       int nIDLastButton 
    );
    

    Matthias



  • pospiech schrieb:

    (D)Evil schrieb:

    http://www.functionx.com/visualc/controls/radiobutton.htm

    die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.

    Kommt mir bekannt vor: http://www.c-plusplus.net/forum/viewtopic-var-t-is-132674.html
    Da geht es zwar um VC2003, aber vielleicht is das 2005er ja genauso doof. 😉


  • Mod

    pospiech schrieb:

    die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.

    Eine für das Gruppen-Radiobutton-Element zugewiesene Variable kann ich auch abfragen und setzen über
    [snip]

    Es geht genau so! Nur wird im Normalfal "Control" angeklickt und Du musst das erstmal ausschalten, dann kannst Du euch eine int Variable anbinden!

    Mach Dir mal den Unterschied klar was es bedeutet eine Control-Variable anzubinden oder eine Variable! Das erste gibt Dir "Control"le über Dein Control. Das zweite liefert Dir beim Datenausstausch den Inhalt.



  • Martin Richter schrieb:

    pospiech schrieb:

    die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.

    Eine für das Gruppen-Radiobutton-Element zugewiesene Variable kann ich auch abfragen und setzen über
    [snip]

    Es geht genau so! Nur wird im Normalfal "Control" angeklickt und Du musst das erstmal ausschalten, dann kannst Du euch eine int Variable anbinden!

    Also, ich habe jetzt statt einer Control eine Value Variable erstellt und den vorgegebenen Wert bool im Quelltext nach int geändert. Ein Auslesen als

    int n=m_WndRadioLinearDB;

    liefert mir jedoch unabhängig von den Status des Radiobuttons immer nur "0".

    Weiter bin ich damit also auch nicht gekommen.

    Matthias



  • hast du vor
    int n=m_WndRadioLinearDB;
    auch ein UpdateData(TRUE); stehn?

    bzw. schau mal mit nem texteditor in die *.rc rein und kuck ob auch alle IDC_RADIO's untereinander stehn oder ob vieleicht das erste IDC_RADIO (was die gruppe definiert)durch ein IDC_BUTTON (oder sonstwas) getrennt von dem nächten IDC_RADIO ist.

    FALSCH wäre
    IDC_RADIO1 //definiert gruppe
    IDC_BUTTON1 //gruppe endet hier
    IDC_RADIO2 //
    IDC_BUTTON2
    ...

    RICHTIG ist
    IDC_RADIO1 //definiert gruppe
    IDC_RADIO2 //
    IDC_RADIO3 //
    IDC_RADIO4 // gruppe endet hier
    IDC_BUTTON1



  • LowFly schrieb:

    hast du vor
    int n=m_WndRadioLinearDB;
    auch ein UpdateData(TRUE); stehn?

    Habe ich noch nie benutzt und kenne ich auch nicht. Wie und wo müsste ich das denn einfügen?

    Ausprobiert habe ich

    m_WndRadioLinearDb.UpdateData(TRUE);
    	n=m_WndRadioLinearDb.GetCheckedRadioButton(IDC_RADIO3,IDC_DB);
    

    was aber auch immer 0 ergibt.

    LowFly schrieb:

    bzw. schau mal mit nem texteditor in die *.rc rein und kuck ob auch alle IDC_RADIO's untereinander stehn oder ob vieleicht das erste IDC_RADIO (was die gruppe definiert)durch ein IDC_BUTTON (oder sonstwas) getrennt von dem nächten IDC_RADIO ist.

    Aus der .rc Datei

    CONTROL         "linear",IDC_LINEAR,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,125,7,31,12
        CONTROL         "dB",IDC_DB,"Button",BS_AUTORADIOBUTTON,171,7,24,14
        CONTROL         "Optionsfeld1",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,162,47,57,10
    

    aus der Resource.h Datei

    #define IDC_RADIO3                      1007
    #define IDC_LINEAR                      1008
    #define IDC_DB                          1009
    

    Matthias



  • wenn du mit m_WndRadioLinearDb**.** GetCheckedRadioButton erreichts ist deine variable IMMER noch eine control mach mal das was martin dir vorgeschlagen hat.

    geh in die header dort wo du m_WndRadioLinearDb definiert hast dort müßte stehn
    CButton m_WndRadioLinearDb;
    und tausch bei alle CButton mit int aus die ein Radio definieren somit bekommst du den wert der Button zurück.

    dann sollte

    UpdateData(TRUE);
    int n = m_WndRadioLinearDb;
    CString f;
    f.Format("%i\n%i",n,m_WndRadioLinearDb);
    MessageBox(f);

    einen anderen wert zurückgeben als 0;



  • es fehlte das UpdateData(True); damit geht es jetzt. DANKE!

    Matthias


Anmelden zum Antworten