VC控件的group属性主要是为Radio Button服务的,其作用是把一组相关的radio button都group到一起,这几个radio button可以共用一个(整型)变量,从而简化代码。

VS2010中文版IDE的描述:

指定基于Tab键顺序的一组控件中的第一个控件。

描述有些拗口,下面举一个示例进行说明。

创建两组radio,一组描述颜色,另外一组描述fruit。每一组都设计了三个radio button。

另外设计一个Edit控件,显示用户的选择。UI效果如下:

Resource

这个对话框的资源代码如下:

IDD_GROUPTEST_DIALOG DIALOGEX 0, 0, 191, 163
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "GroupTest"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    GROUPBOX        "Color",IDC_STATIC,20,17,154,34
    CONTROL         "Red",IDC_RED,"Button",BS_AUTORADIOBUTTON | WS_GROUP,29,27,40,17
    CONTROL         "Green",IDC_GREEN,"Button",BS_AUTORADIOBUTTON,68,28,40,17
    CONTROL         "Blue",IDC_BLUE,"Button",BS_AUTORADIOBUTTON,117,28,40,17
    GROUPBOX        "Fruit",IDC_STATIC,21,62,152,43,WS_GROUP
    CONTROL         "Apple",IDC_APPLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,32,75,40,17
    CONTROL         "Orange",IDC_ORANGE,"Button",BS_AUTORADIOBUTTON,70,76,40,17
    CONTROL         "Banana",IDC_BANANA,"Button",BS_AUTORADIOBUTTON,120,76,40,17
    LTEXT           "Selection:",IDC_STATIC,22,115,83,8
    EDITTEXT        IDC_SELECTION,22,130,152,17,ES_AUTOHSCROLL | ES_READONLY

这里已经定义好了各个控件的tab顺序。

group

IDC_RED/Green/Blue这三个radio button是一组的,所以需要给第一个radio button(即IDC_RED)设置group属性,即设置为True;后面的两个radio button的group属性设置为false。以此说明这三个是一组。

表示color的最后一个radio button是IDC_BLUE,所以该控件接下来的分组框Fruit IDC_STATIC就需要设置为True,说明这个Fruit IDC_STATIC开始了一个新的分组。等价于说,IDC_RED/Green/Blue这三个radio button是一组,啰嗦了???

虽然,这个Fruit IDC_STATIC的group属性设置为False也不会有功能上的问题,但这种及时设置True表示终结一个group的划分,总是一个好的编程习惯罢。

类似地,可以了解接下来的三个Radio Button,即IDC_APPLE,IDC_ORANGE,IDC_BANANA的group属性。

可以看到在IDC_BANANA后面的”Selection:” IDC_STATIC没有设置group属性为True,尽管不是一个好的编程习惯,但不影响程序的功能。

为控件映射一个成员变量

对于group起来的一组radio button,只需要为第一个控件映射一个整型变量即可。如此,这一组的radio button对应的整数就分别为0,1,2,……。

int m_iColor;
int m_iFruit;
CString m_sSelection;
afx_msg void OnBnClickedRed();
afx_msg void OnBnClickedGreen();
afx_msg void OnBnClickedBlue();
afx_msg void OnBnClickedApple();
afx_msg void OnBnClickedOrange();
afx_msg void OnBnClickedBanana();
void UpdateSelection();

实现文件:

void CGroupTestDlg::OnBnClickedRed()
    UpdateSelection();
void CGroupTestDlg::OnBnClickedGreen()
    UpdateSelection();
void CGroupTestDlg::OnBnClickedBlue()
    UpdateSelection();
void CGroupTestDlg::OnBnClickedApple()
    UpdateSelection();
void CGroupTestDlg::OnBnClickedOrange()
    UpdateSelection();
void CGroupTestDlg::OnBnClickedBanana()
    UpdateSelection();
void CGroupTestDlg::UpdateSelection()
    UpdateData(TRUE);
    const size_t MAX_SIZE = 3;
    static CString sColors[MAX_SIZE] = {"Red", "Green", "Blue"};
    static CString sFruits[MAX_SIZE] = {"Apple", "Orange", "Banana"};
    CString sColor("None"), sFruit("None");
    if (m_iColor >= 0 && m_iColor < MAX_SIZE) sColor = sColors[m_iColor];
    if (m_iFruit >= 0 && m_iFruit <= MAX_SIZE) sFruit = sFruits[m_iFruit];
    m_sSelection.Format("Color(%d): %s; Fruit(%d): %s", 
        m_iColor, sColor,
        m_iFruit, sFruit);
    UpdateData(FALSE);
	m_Group.Create(_T("Action"),
		WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
		CRect(20,200,200,300),
		m_pWnd,
		1000);
	m_Group.ShowWindow(SW_SHOW);
                                    一、对单选按钮进行分组:  每组的第一个单选按钮设置属性Group,Tabstop,Auto;其余按钮设置属性Tabstop,Auto。 如: Radio1、Radio2、Radio3为一组,Radio4、Radio5为一组 设定Radio1属性Group,Tabstop,Auto 设定Radio2属性:Tabstop,Auto 设定Radio3属性:Tabstop,Auto 设定Radio4
    特点1:同一组内所有件类型相同。
    特点2:同一组内设置为Group属性件,大于其ID,小于下一个有Group属性件的ID的所有件都是该组中的件。
    特点3:同一组内的所有件是互斥的。
    特点4:同一组中所有的件只能由一个变量进行关联。
举例说明:
如上图,窗口上有6个Radio件,将其分为两组A和B。
                                    添加一个Group件,在其中放入三个Radio Button件,为Radio件添加control类型的变量(添加变量时必须先把Group属性从false设置为true,否则无法添加变量)。
实现的方法:
1.首先我们要将三个radiobutton的layout设置成可以点击的,然后我们将这三个radio设置成不可以点击的,我们通过点击layout来实现,radiobutton的选中,通过设置               android:focusable="true"    android:clickable="true"属性来实
                                    多行列单选按钮组RadioButton的实现:合并多个RadioGroup为一组,为组内各按钮设置监听器,当本组按钮被选中时,清除其他Group中按钮的选中状态,达到多行列的单选按钮组的效果。代码实现简单,适合少量按钮的布局场景
                                    在一个页面有多个相同的件时,比如有多个相同的radio button,可以用一个组来实现,在第一个属性中选中group,给这组件设置一个相关联的成员变量。那么第一个radio件的值将会是0,接着会是1,2,3…,它会直到下一个标有group的相同件为止。这样可以更方便的进行程序设计。