【发布时间】:2014-11-20 08:43:28
【问题描述】:
我在让 TToolbar 按钮显示为“启用”时遇到问题
按钮有一个分配给它的动作 - 由 OnClick 事件触发
它还设置了一个下拉菜单,上面有 2 个选项,这两个选项都是启用的,并且都在单击时触发。
尽管如此,TToolbar 按钮始终保持灰色,但接受点击。
有什么建议吗?
【问题讨论】:
标签: delphi delphi-xe6
我在让 TToolbar 按钮显示为“启用”时遇到问题
按钮有一个分配给它的动作 - 由 OnClick 事件触发
它还设置了一个下拉菜单,上面有 2 个选项,这两个选项都是启用的,并且都在单击时触发。
尽管如此,TToolbar 按钮始终保持灰色,但接受点击。
有什么建议吗?
【问题讨论】:
标签: delphi delphi-xe6
你做错了。 :-)
使用动作时,不要使用按钮的 OnClick 事件 - 而是将代码放在动作的 OnExecute 事件中(因为这是正在执行的 - 动作 - 而不是按钮)。将操作分配给控件后,在有 TAction.OnExecute 的处理程序之前无法启用控件。
使用动作的原因是您可以将代码放在一个地方(与动作相关的事件),然后附加到该动作的每个控件都使用该公共代码来执行相同的功能。在该单个位置编辑代码意味着附加到该操作的所有控件都会看到相同的更改。
如果TAction.OnExecute 事件没有附加任何内容,则如果控件被选中(单击),则该控件将无事可做,因此首先没有理由启用它。
【讨论】:
ActionOnExecute 在运行时不会被视为附加到按钮,因为它有一个 OnClick 事件。
CommandStyle 属性设置为csMenu。单击Items 属性,然后单击... 按钮。将下拉菜单中所需的每个项目的新操作添加到项目列表中,就像您执行任何其他操作一样。
万一其他人遇到这个问题,我只是遇到了这个问题(使用 Delphi 10.2 Tokyo)。
由于某种原因,TToolButton 上的“EnableDropdown”属性在设置为 true 时导致按钮变灰。将此属性设置为 false 似乎已经解决了我的问题(下拉菜单仍然有效)。
【讨论】: