工具栏中的主菜单实现自定义快捷键的方法

如果做过“把主菜单放到工具栏里”的兄弟们都会发现一个问题:那就是系统会自动给菜单选项加上热键(如果你的菜单选项是英文,那么会在第一个字母下加横线,如果你的菜单选项是中文,那么会在菜单选项的后面加上类似(Y)、(Z)的快捷键),而使你自己定义的快捷键失效!(注:我后来发现,如果自己加的是类似(H)的快捷键时,就不会出现这样的问题。而只有当我们加的是类似Ctrl+A,F1,Ctrl+Alt+D等的快捷键时才会出现问题;另外当为TMainMenu设置了Images属性后,也就是说给菜单项加了图片,英文菜单的问题会消失,但中文菜单的问题依然存在。这其中的原因,我也搞不清楚)。即使我们设置mainMenu的AutoHotkeys=maManual也解决不了。

当初我在遇到这个问题后,一筹莫展,只好向高手们请教。后来在BCB_FANS和JSP两位老大的帮助下,才解决问题。因此,这篇文章实际上是整理的两位老大的方法。

首先,让我们去掉系统自动加的热键。

当我们把菜单放到工具栏里后,我们在程序运行时看到的菜单其实不是我们在设计时加的TMainMenu,而是系统临时new的一个TPopupMenu,而这个临时的菜单的AutoHotkeys属性默认为maAutomatic,所以就会给菜单自动加上热键。这个问题是BCB_FANS发现的(我不可能有这么厉害,呵呵),他的原话是这样的:

“实际上显示菜单的时候,TToolBar并不是使用原来已经设计好的菜单了,而是重新建立一个临时的TPopupMenu,并把原来的那个菜单的菜单项添加到这个TPopupMenu当中,最后才显示这个临时的TPopupMenu。这个TPopupMenu的AutoHotkeys为maAutomatical,并且没有任何方式可以控制这个临时的TPopupMenu的属性。所以显示出来的菜单都会自动添加快捷字符。”

时间: 2025-01-02 15:38:11

工具栏中的主菜单实现自定义快捷键的方法的相关文章

wpf-WPF中Page页面上怎么自定义快捷键。急急急!!!

问题描述 WPF中Page页面上怎么自定义快捷键.急急急!!! 是继承自Page的页面,不是Window的页面,继承自Window的页面快捷键有用,但换成Page页就失效了. 解决方案 http://blog.sina.com.cn/s/blog_4c0e8aa20100ung8.html 解决方案二: http://blog.csdn.net/sephoenix/article/details/8555322

调用webservice中含返回值为自定义对象的方法时,报ClassCastException错误

问题描述 本人初学webservice,平台用spring+cxf+ibatis,在调用接口中含返回自定义对象的方法时,就会报ClassCastException,即方法:publicList<User>getUserList() 调用返回值为基本类型的方法,则没问题,如:publicIntegergetUserCount(); 困扰很久,包括调用参数中含自定义类型的方法,也会报同样错误,如:publicvoidbImportData(List<User>uList); 请教各位大

《ANSYS 14热力学/电磁学/耦合场分析自学手册》——2.6 主菜单

2.6 主菜单 ANSYS 14热力学/电磁学/耦合场分析自学手册主菜单(Main Menu)包含了不同处理器下的基本ANSYS操作.它基于操作的顺序排列,同样,应该在完成一个处理器下的操作后再进入下一个处理器.当然,也可以随时进入任何一个处理器,然后退出再进入,但这不是一个好习惯应该是做好详细规划,然后按部就班地进行.这样才能便利程序具有可读性,并降低程序运行的代价. 主菜单中的所有函数都是模态的,完成一个函数之后才能进行另外的操作,而菜单栏则是非模态的.例如,如果用户在工作平面上创建关键点,

Beyond Compare快捷键设置方法

  相信很多人都是刚刚开始使用Beyond Compare快捷键这个软件的.而有少部分用户觉得软件用起来有些不顺手,执行一次比较会话操作要花费好长时间,其实主要是因为没有学会使用快捷键.现在最新Beyond Compare 4中文版已经强势来袭,有一些软件自设的快捷键是非常有用的,下面主要介绍一下Beyond Compare快捷键设置方法. 具体操作步骤如下所示 由于Beyond Compare软件可执行比较会话类型丰富,本文将以文本比较会话为例讲解自定义快捷键的方法. 步骤一:打开Beyond

如何给Word2010中的符号设置自定义快捷键

  在Word文档中,鼠标放到需要插入圆点处单击,然后打开"插入"标签,在符号栏中单击"符号"按钮,一些常用符号会在此列出,如果有您需要的,单击选中即可.如果这里没有需要的圆点,请点击菜单底部的"其它符号"链接.     弹出符号对话窗后,在"子集"下拉菜单中选择一个合适的符号种类.这里,我们选择"广义标点"来举例.选中圆点图标后,单击"插入"按钮.(先不要关闭符号对话窗) PS: 对话

vc++6.0中代码问题:显示完整的现存学员信息后,还要显示主菜单

问题描述 vc++6.0中代码问题:显示完整的现存学员信息后,还要显示主菜单 #include #include int menu(); void init(); void listStu(); int insertNewStu(int row); int getStuRowByNo(char no[]); int deleteByNo(); void analyse(char c[]); /****************************************************

在rcp程序中如何实现类似于eclipse中的Debug透视图下的Debug视图工具栏中的单步,跳过执行等按钮的快捷键

问题描述 大致如题所说,我有一个视图工具栏中也有类似debug视图的执行停止按钮,但是我目前只能在选中当前视图下,按F7或F8等快捷键有用,如果鼠标在其它视图中,就不知道该怎么搞了

10个PS自定义快捷键介绍

1.显示.隐藏和隔离图层 这个快捷键大大节省了工作时间.一旦开始使用这个快捷键,我们就再也不用点击图层面板上的眼睛图标了.设置这个快捷键的好处是它可以用来打开或关闭选中的图层.如果想检查单个图层或一组特定的图层对最终作品的影响,只需选中这些图层,按下设置的显示/隐藏图层命令的快捷键即可. 设置F3来显示/隐藏图层.设置Command/Ctrl+F3隔离选中的图层. 2.转换为智能对象和编辑内容 智能对象或许是Photoshop无损操作中最重要的一个元素,但很奇怪的是,竟然没有为它们设置默认的快捷

excel中合并单元格的快捷键的方法及设置技巧

  快捷键的熟练使用可以帮助我们在工作中提高效率,接下来为您讲解合并单元格的快捷键设置方法的图文演示合并单元格在excel默认的情况下是没有快捷键的.需要用以下方法设置 1.打开excel,选择工具--点击"自定义".这时会出现一个"自定义"表单.不要理会这个表单,上面没有可供选择的项目. 2.右键点击"合并单元格"的图标.发现没有,和平时右击不一样了! 3.选择"总是只用文字"选项.这时平时用来合并的按钮就变成了 "