我的表单上共有 4 个单选按钮,我想将前两个按钮设置在一组中,将后两个按钮设置在另一组中,以便我可以检查第一组中的一个和第二组中的一个。
现在,如果我选中第一组中的一个,则第二组中的一个将变为未选中。
我一直想知道如何做到这一点,我相信现在是解决这个问题的时候了。:)
引用受信任的 Delphi 5 帮助:
默认情况下,所有直接包含在同一个窗口控件容器中的单选按钮,例如 a
TRadioGroup
或TPanel
,都被分组。例如,表单上的两个单选按钮只有在它们包含在不同的容器中时才能同时选中,例如两个不同的组合框。
将两个按钮放在一个面板上,另外两个放在另一个面板上。这样,它们将被视为单独的分组。更改面板斜面以移除边缘,如果您愿意的话,这四个按钮不会让用户看起来好像它们是分开的。
RadioButton 没有 GroupIndex 属性,就像 SpeedButton 一样。
如果有的话会容易得多,因为您可以使用数字来创建仅与 GroupIndex 中设置的相同数字的单选按钮交互。
因此,您所能做的就是将它们放在一个分组控件中,例如面板。
但是你总是可以用不同的新属性构建你自己的 RadionButton 版本。:)
这就是我们使用 Groupbox 和 Radiogroups 的原因(可以在标准控件中找到)。我建议您创建 2 个 Groupbox 并在每个中放置 2 个单选按钮。然后您将能够检查 2 个单选按钮。
您还可以选择组框的标题。这是组织申请表的好方法
当同一组的单选按钮可以在行或列中时,这很好,但是如果单选按钮必须以 X 样式(或更复杂的方式)显示怎么办:
A B
C D
我放的那个 X 风格样本的限制:
它在视觉上是必需的,在 X 样式中,所以我不能放置任何包含该 RadioButton 的 GroupBox,因为 GroupBox 是矩形的,而不是对角线。
我不知道仅使用标准组件的任何修复,其中有一个 hack 使面板在视觉上透明并且还可以点击,所以两个面板都是一个正方形,一个在另一个上。
但是,如果单选按钮彼此相距很远,有很多复杂的组件、流程面板、备忘录等呢?
唯一的选择是使用第三方组件(最后据我所知)或做很多艰苦的工作:
Too much work for something that could had been implemented on a simple property like RadioGroupIndex, if assigned a value of 0 then work as they work now, else uncheck only the ones for that same group... like on main menus.