to robinswp&kkkcheng:
TActionList是命令组控件,可以分类管理定义的TAction
PopupMenu中的MenuItem的Action属性(TButton等一些其它控件也有Action属性)
设置为定义的Action1,MenuItem的ShortCut,Caption,OnClick会自动设置为该Action
的ShortCut,Caption,OnExecute.....
Now
你只需要维护Action List
你可以让多个控件使用同一个Action;
ActionList是非可视控件,其parent只能是form
Delphi是如此处理键盘事件的:
接受键盘消息的必须是TWinControl类,(TToolButton恰好不是TWinControl的子类)
TWinControl处理如下:
if 能处理 then
处理
else
交给Parent处理;
最终会传递给Form;
Form的处理如下:
if 是MainMenu的HotKey then
处理
else
if 是PopupMenu的HotKey then
处理
else
if 定义了ActionList then
交给ActionList处理
我想,够清楚了吧!