TAction被解雇的方式是什么?

时间:2011-03-31 14:03:10

标签: delphi

用户可以通过很多方式触发操作(TAction)执行:快捷键,工具栏按钮,弹出菜单按钮等。是否可以获取信息 该操作是如何触发的?

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

更新

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

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

1 个答案:

答案 0 :(得分:11)

也许您可以使用ActionComponent

  

使用ActionComponent辨别哪个   客户端组件导致此操作   执行。例如,检查   来自OnExecute的ActionComponent   事件处理程序,如果你需要知道什么   用户操作触发了此操作。

     

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

还有TApplication.OnActionExecuteTActionList.OnExecute,可能还有更多“钩子”。