4

这很有趣:) 但如何做类似的事情ActionList1.MyAction.Enable:=false

一个动作列表有按钮的动作,如果一个按钮是不可见的,我需要禁用它的动作(如果不这样做并按下一个快捷方式,那么将执行一个过程)。

可能是我做错了什么,但我没有为按钮分配操作。我只有一个带有动作的动作列表。每个动作都有一个快捷方式。当按下此快捷方式时,将执行该操作并执行一个过程。如果单击按钮 -> 也会执行相同的过程。

State:=asSuspended用于整个动作列表。

谢谢!!!

4

2 回答 2

6

您应该分配按钮的Action属性并通过操作控制一切。将动作设置为禁用、不可见等,按钮如下。

不要设置按钮的 OnClick 事件处理程序,而是使用操作的相应事件。使用操作的 OnUpdate 事件来设置 Visible、Enabled 等属性,基本上是在运行时更改的所有内容。

于 2011-07-19T18:15:28.603 回答
1

TActionList是一个包含一个或多个TAction's 的列表。

TAction具有以下属性:
AutoCheck
Caption
Checked
Enabled
GroupIndex
HelpContext
HelpKeyword
HelpType
Hint
ImageIndex
SecondaryShortCuts
ShortCut
Visible

只要您遵循 David 的建议并使用 TActionList 完成所有操作,启用应该就可以正常工作。

或者,如果taction.enabled对您不起作用,您可以随时测试以查看设置actionxxxx.shortcut := '';是否有效。
如果不是,那么其他一些快捷方式正在拦截击键。

请参阅: http:
//docwiki.embarcadero.com/VCL/XE/en/ActnList.TAction
http://docwiki.embarcadero.com/VCL/en/ActnList.TActionList

于 2011-07-19T18:23:16.077 回答