TAaction 单选项目
在动作带中有一个 TAction 组件。
该组件拥有一个名为
GroupIndex: Integer;
但该字段
RadioItem: Boolean;
不存在的属性。
- 这是为什么?
- 如何使 TAction 成为复选框?
操作的方向是 ActionMainMenuBar 和 ActionManager。
In action bands there is a TAction component.
That component holds a property named
GroupIndex: Integer;
however the field
RadioItem: Boolean;
is not there.
- Why is that?
- How can I make a TAction to be a checkbox?
The orientation of the action is ActionMainMenuBar and ActionManager.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尽管 TAction 源自 TComponent,但操作并不是 GUI 元素意义上的组件。它旨在链接到 GUI 元素,例如可以是单选按钮、复选框,或者在您的情况下是 TActionMainMenuBar 上的 TActionClientItem。
至于您的问题:
操作的
GroupIndex
属性指示该操作的行为是否类似于单选项目。帮助说:<块引用>
GroupIndex 用于定义类似于单选按钮的操作组。当GroupIndex大于0时,它标识该操作所属的组。当该组中任何操作的 Checked 属性设置为 true 时,该组中所有其他操作的 Checked 属性都设置为 false。也就是说,一次只能检查组中的一项操作。注意:组中的所有操作必须由同一操作列表或操作管理器列出。
要在 ActionMainMenuBar 中显示带有复选框的菜单项(TActionClientItem):
已检查
设置为True,Category
属性,Checked
属性。要显示链接到 ActionManager 中操作的普通复选框:不要使用 ActionMainMenuBar,而是使用可以在其上放置默认复选框组件的 ActionToolBar。
Though TAction descends from TComponent, an action is not a component in the sense of a GUI element. It is meant to be linked to a GUI element, which for instance can be a radio button, a checkbox, or in your case a TActionClientItem on a TActionMainMenuBar.
As for your questions:
The
GroupIndex
property of an action indicates whether the action behaves like a radio item. The help says:To show a menu item (a TActionClientItem) in an ActionMainMenuBar with a checkbox:
Checked
to True,Category
property,Checked
property in the action's OnExecute event handler.To show a normal checkbox which is linked to an action in the ActionManager: do not use an ActionMainMenuBar, but an ActionToolBar on which you can drop the default checkbox component.
我不确定您是否需要复选框或单选按钮,但两者都很简单:例如,一个带有以下 Form1.dfm 的简单 VCL 应用程序:
带有这些事件处理程序:
就像我所期望的那样工作。
要使操作看起来像菜单上的单选项,必须在菜单项上设置 RadioItem,而不是在操作上设置 RadioItem。我不知道为什么这不是默认值,如果 GroupIndex 是 <> 0.
更新: ActionManager 的东西比旧的 ActionLists 更棘手。该 DFM
与该处理程序
可以正常工作。但是,如果不使用 AutoCheck,我就无法让无线电项目正常工作。
I'm not sure if you want checkboxes or radio buttons, but both are easy: For example a simple VCL app with the following Form1.dfm:
with these event handlers:
works like one would expect for me.
To make the actions look like radio items on the menu, one has to set RadioItem on the menu items, not on the action. I don't know why this is not the default if GroupIndex is <> 0.
Update: The ActionManager stuff is trickier than good old ActionLists. This DFM
with this handler
works. However I can't get the radio items to work without using AutoCheck.