TAction被解雇的方式是什么?

Rom*_*sky 6 delphi

有很多的方式,用户可以如何触发一个动作(TAction)执行:快捷键,工具栏按钮,弹出式菜单按钮等是否有可能得到的信息是如何的行动已被触发?

我只是考虑实现活动日志,以找出在GUI中使用不同功能的最流行的方法.

更新

我需要收集一些关于用户如何与应用程序GUI交互的统计信息.

仅仅因为您需要实现日志记录而不是为每个按钮创建单独的操作不是最好的主意.Ulrich Gerhardt的回答看起来很合适.我可以为TActionList.OnExecute事件分配一个处理程序,并从一个地方写入日志.

Uli*_*rdt 11

也许你可以使用ActionComponent:

使用ActionComponent可以识别导致此操作执行的客户端组件.例如,如果您需要知道用户操作触发了此操作,请检查OnExecute事件处理程序中的ActionComponent.

当用户单击客户端控件时,该客户端在调用操作的Execute方法之前设置ActionComponent.执行操作后,操作会将ActionComponent重置为nil(Delphi)或NULL(C++).

还有TApplication.OnActionExecute,TActionList.OnExecute以及可能更多的"钩子".

  • 难以检测键盘调用动作的不同方式.可以是捷径.可能是加速器.可以通过光标/标签键导航. (2认同)