用户可以通过很多方式触发操作(TAction)执行:快捷键,工具栏按钮,弹出菜单按钮等.是否可以获取有关触发该操作的信息?
我只是考虑实现活动日志,以找出在GUI中使用不同功能的最流行的方法.
更新
仅仅因为您需要实现日志记录而不是为每个按钮创建单独的操作不是最好的主意. Ulrich Gerhardt的回答看起来很合适.我可以为TActionList.OnExecute事件分配一个处理程序,并从一个地方写入日志.
解决方法
也许你可以使用
ActionComponent:
Use ActionComponent to discern which
client component caused this action to
execute. For example,examine
ActionComponent from an OnExecute
event handler if you need to know what
user action triggered this action.When the user clicks a client control,
that client sets ActionComponent
before calling the action’s Execute
method. After the action executes,the
action resets ActionComponent to nil
(Delphi) or NULL (C++).
还有TApplication.OnActionExecute,TActionList.OnExecute和更多的“钩子”.