特殊菜单如何搭配 HotKey?(100分)

  • 主题发起人 主题发起人 jiichen
  • 开始时间 开始时间
J

jiichen

Unregistered / Unconfirmed
GUEST, unregistred user!
利用 ControlBar 及 ToolBar 及 TMainMenu
做出型似 Delphi5 形式的工具列,但有一问题
,原来在 MainMenu 中的热键全都失效了,看了
一下 MainMenu 设定,ShortCut 设置还在,

请问高手,有无改善方式?
 
这种现象是正常的, 因为TOOLBAR上面的按钮是TGraphicControl, 所以没有Focus, 也不能
直接接受消息, 办法是在TOOLBAR上面加TBUTTON按钮来代替TTOOLBUTTON
 
可是用 TButton 无法直接 Load TMainMenu 内的选单。

我以想出一个苦工的办法,
在 Form OnCreate Event 设置一程序,可收集 MainMenu
内的热键至 TList 内,做成一个热键区
type
TpHotKey = ^TuHotKey;
TuHotKey = record
KeyCode:word;
Shift:TShiftState;
MenuItem:TMenuItem;
end;

将 Form KeyPreview:=true;
而在 Form OnKeyDown Event 内判断是否按键属于
热键区内,并得知其 MenuItem,再呼叫 OnClick
便可模拟类似的结果。

但这是个笨方法,因为 Form 搭配 TMainMenu 本就有
处理热键的功能,为了界面风格而舍弃此一好处,
不知有无其他好办法?

 
用TActionList不就解决了?
 
果然高明,虽然有在使用 ActionList 但一直
未对其热键设置着眼...。惭愧!
 
接受答案了.
 
后退
顶部