用户可以通过很多方式触发操作(TAction)执行:快捷键,工具栏按钮,弹出菜单按钮等。是否可以获取信息 该操作是如何触发的?
我只是考虑实现活动日志,以找出在GUI中使用不同功能的最常用方法。
更新
我需要收集有关用户如何与应用程序GUI交互的一些统计信息。
为每个按钮创建单独的操作并不是最好的选择,因为您需要实现日志记录。 Ulrich Gerhardt的回答看起来很合适。我可以为TActionList.OnExecute事件分配一个处理程序,并从一个地方写入日志。
答案 0 :(得分:11)
也许您可以使用ActionComponent:
使用ActionComponent辨别哪个 客户端组件导致此操作 执行。例如,检查 来自OnExecute的ActionComponent 事件处理程序,如果你需要知道什么 用户操作触发了此操作。
当用户点击客户端控件时, 该客户端设置ActionComponent 在调用动作的执行之前 方法。动作执行后, action将ActionComponent重置为nil (Delphi)或NULL(C ++)。
还有TApplication.OnActionExecute,TActionList.OnExecute,可能还有更多“钩子”。