【发布时间】:2010-11-14 02:54:12
【问题描述】:
我的表单上共有 4 个单选按钮,我想将前两个按钮设置在一组中,将后两个按钮设置在另一组中,以便我可以检查第一组中的一个和第二组中的一个。
现在,如果我选中第一组中的一个,第二组中的一个将变为未选中。
我一直想知道如何做到这一点,我相信现在是解决这个问题的时候了。 :)
【问题讨论】:
我的表单上共有 4 个单选按钮,我想将前两个按钮设置在一组中,将后两个按钮设置在另一组中,以便我可以检查第一组中的一个和第二组中的一个。
现在,如果我选中第一组中的一个,第二组中的一个将变为未选中。
我一直想知道如何做到这一点,我相信现在是解决这个问题的时候了。 :)
【问题讨论】:
引用值得信赖的 Delphi 5 帮助:
默认情况下,所有直接包含在同一个窗口控件容器中的单选按钮,例如
TRadioGroup或TPanel,都会被分组。例如,表单上的两个单选按钮只有在单独的容器(例如两个不同的组合框)中时才能同时选中。
【讨论】:
将两个按钮放在一个面板上,另外两个放在另一个面板上。这样,它们将被视为单独的分组。更改面板斜面以移除边缘,如果您愿意的话,四个按钮在用户看来不会像是分开的。
【讨论】:
RadioButton 没有 GroupIndex 属性,就像 SpeedButton 一样。
如果有的话会容易得多,因为您可以使用数字来创建仅与 GroupIndex 中设置的相同数字的单选按钮交互。
因此,您所能做的就是将它们放在一个分组控件中,例如面板。
但您始终可以使用不同的新属性构建自己的 RadionButton 版本。 :)
【讨论】:
这就是我们使用 Groupbox 和 Radiogroups 的原因(可以在标准控件中找到)。我建议您创建 2 个 Groupbox 并在每个中放置 2 个单选按钮。然后您将能够检查 2 个单选按钮。
您还可以为组框选择标题。这是组织申请表的好方法
【讨论】:
如果同组的单选按钮可以在行或列中,那就太好了,但是如果单选按钮必须以 X 样式(或更复杂的方式)显示怎么办:
A B
C D
我放的那个 X 样式样本的限制:
这是视觉上的要求,在 X 样式中,所以我不能放置任何包含该 RadioButton 的 GroupBox,因为 GroupBox 是矩形的,而不是对角线的。
我不知道仅使用标准组件的任何解决方法,其中有一个技巧可以使面板在视觉上透明并且还可以点击,因此两个面板都是正方形,一个在另一个之上。
但是如果单选按钮彼此相距很远,有很多复杂的组件、流程面板、备忘录等呢?
唯一的选择是使用第三方组件(最后据我所知)或做很多艰苦的工作:
对于本来可以在 RadioGroupIndex 这样的简单属性上实现的东西来说工作量太大,如果分配的值是 0,那么就可以像现在一样工作,否则只取消选中同一组的那些……就像在主菜单上一样。
【讨论】: