用户可以通过多种方式触发操作(TAction)的执行:快捷键、工具栏按钮、弹出菜单按钮等。是否有可能获得如何触发该操作的信息?
我只是在考虑活动日志的实现,以找出在GUI中使用不同特性的最流行方法。
更新
我需要收集一些关于用户如何与应用程序GUI交互的统计信息。
仅仅因为您需要实现日志记录,为每个按钮创建一个单独的操作并不是最好的主意。乌尔里希·格哈特的回答看起来很合适。我可以为TActionList.OnExecute事件分配一个处理程序,并从一个地方写入日志。
发布于 2011-03-31 14:15:23
也许你可以使用ActionComponent
使用ActionComponent来识别哪个客户端组件导致了此操作的执行。例如,如果需要知道是什么用户操作触发了此操作,请从ActionComponent事件处理程序中检查OnExecute。
当用户单击客户端控件时,该客户端在调用操作的Execute方法之前设置ActionComponent。动作执行后,动作将ActionComponent重置为零(Delphi)或NULL (C++)。
还有TApplication.OnActionExecute,TActionList.OnExecute,可能还有更多的“钩子”。
https://stackoverflow.com/questions/5501123
复制相似问题