如何在一组中设置两个单选按钮,在另一组中设置两个单选按钮?

时间:2009-07-26 09:04:15

标签: delphi vcl

我的表单上共有4个单选按钮,我想在一组中设置前两个按钮,在另一组中设置第二个按钮,这样我就可以从第一组中检查一个,从第二组中检查一个。

现在,如果我从第一组中选择一个,则第二组中的一个将被取消选中。

我一直想知道如何做到这一点,我相信现在是解决这个问题的时候了。 :)

5 个答案:

答案 0 :(得分:13)

引用可靠的Delphi 5帮助:

  

默认情况下,直接包含在同一窗口控件容器中的所有单选按钮(例如TRadioGroupTPanel)都会被分组。例如,表单上的两个单选按钮只有在包含在单独的容器中时才能同时检查,例如两个不同的组框。

答案 1 :(得分:2)

将两个按钮放在面板上,另外两个放在另一个面板上。这样,他们将被视为单独的分组。更改面板斜面以移除边缘,如果这是您想要的,则四个按钮不会向用户显示它们是否分开。

答案 2 :(得分:0)

RadioButton没有GroupIndex属性,就像SpeedButton那样。

如果有的话会更容易,因为你可以使用数字创建一组RadioButtons,它们只与GroupIndex中设置的相同数字进行交互。

所以你所能做的就是在分组控件中输出它们,比如Panel。

但是你总是可以使用不同的新属性构建自己的RadionButton版本。 :)

答案 3 :(得分:0)

这就是我们使用Groupbox和Radiogroups的原因(可以在标准控件中找到)。我建议你创建2个Groupbox并在每个组中放置2个radiobuttons。然后你就可以检查2个radiobuttons。

您还可以为组框选择标题。这是组织申请表格的一种非常好的方式

答案 4 :(得分:0)

当相同组的单选按钮可以在行或列中时,这很好,但是如果单选按钮必须以X样式(或以更复杂的方式)显示,那该怎么办:

 A B
 C D

我放置的X样式示例的限制:

  • A与D有关系(A和D不能同时检查,检查一个取消选中另一个)
  • C与B有关(C和B不能同时检查,检查一个取消另一个)

在视觉上需要它,在X风格中,所以我不能放任何包含RadioButton的GroupBox,因为GroupBox是矩形而不是对角线。

我不知道只使用标准组件的任何修复,其中有一个黑客可以使面板在视觉上透明,也可以点击通过,所以两个面板都是正方形,一个在另一个面板上。

但是,如果将单选按钮放在另一个很远的地方,有很多复杂的组件,流程面板,备忘录等等呢?

唯一的选择是使用第三方组件(最后根据我所知)或做很多努力工作:

  1. 为每个RadioButton创建一个面板,其大小和位置与RadioButton完全相同;这使得单选按钮不会取消选中任何其他按钮,因此需要更多代码。
  2. 为每个RadioButton添加代码,因此在检查时,请执行取消选中与其相关的所有代码(不能同时检查的那些代码)。
  3. 对于像RadioGroupIndex这样的简单属性可以实现的东西太多了,如果赋值为0,那么就像现在一样工作,否则只取消选中同一组的那些...就像在主菜单上一样。