修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
问题:将 Frame 含 PopupMenu 放置 Form 后,在 Frame 里的 PopupMenu 失效,无法按快捷键。
适用:(XE7 update 1 / XE8) for Windows 平台
修正方法:
请将源码 FMX.Forms.pas 复制到自己的工程目录里,再进行修改。
找到 TCommonCustomForm.KeyDown 函数,修改如下:
procedure TCommonCustomForm.KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);
..... 省略 ......
{+++>}
// 遍历所有的 Menu
function FindMenu(c: TFmxObject): TFmxObject;
var i: Integer;
begin
if c is TFmxObject then
for i:= to TFmxObject(c).ChildrenCount - do
begin
if TFmxObject(c).Children[i] is TMainMenu then
TMainMenu(TFmxObject(c).Children[i]).DialogKey(Key, Shift)
else if TFmxObject(c).Children[i] is TPopupMenu then
TPopupMenu(TFmxObject(c).Children[i]).DialogKey(Key, Shift);
FindMenu(TFmxObject(c).Children[i]);
end;
end;
{<+++}
var
Control: IControl;
begin
..... 省略 ......
// 3. perform key in other Menus
for I := ChildrenCount - downto do
if Children[i] <> FocusPopup then
begin
{+++>} FindMenu(Children[I]); // 加入这行:遍歷所有的 Menu
if Children[I] is TMainMenu then
TMainMenu(Children[I]).DialogKey(Key, Shift)
else if Children[I] is TPopupMenu then
TPopupMenu(Children[I]).DialogKey(Key, Shift);
if Key = then
Exit;
end;
..... 省略 ......
end;
修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题的更多相关文章
- Eclipse格式化代码快捷键失效问题
一般情况下,Eclipse快捷键失效是因为与其它软件快捷键冲突,Eclipse格式化代码快捷键正好与搜狗输入法的“简繁切换”的快捷键冲突,将搜狗输入法的快捷键修改一下就行了.
- vs2012快捷键失效解决办法
快速解决vs开发工具快捷键失效,看图
- Intellij idea 复制粘贴查找快捷键失效
遇到此问题,竟不能复制, 发现原因,是因为勾选了Vim模式, Tools,Vim Emulator,前面会有一个√,取消即可,如图: 我的是这个原因,复制粘贴快捷键失效,也有可能历史粘贴板的深度不够 ...
- webstorm快捷键 webstorm keymap内置快捷键英文翻译、中英对照说明
20160114参考网络上的快捷键,整理自己常用的: 查找/代替shift+shift 快速搜索所有文件,简便ctrl+shift+N 通过文件名快速查找工程内的文件(必记)ctrl+shift+al ...
- IDEA中调试时F8,F7快捷键失效
idea中调试时F8,F7快捷键失效 原因:相关软件的快捷键占用了F8,F7,如我的有道词典占用F8了这个快捷键,导致idea调试时不能使用F8,改变有道词典的快捷键即可.
- idea Ctrl+Alt+T 快捷键失效
idea快捷键 CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里 这个快捷键失效了,显然是热键冲突,查看了喜欢占热键的输入法.词典.微信.qq.都没找到占用,最后发现 ...
- 修复 Edge 浏览器 1Password 插件 Ctrl+Shift+X 弹出快捷键失效
解决方式 在 Edge 浏览器右上角 1Password插件图标上右键,选择设置: 在打开的 1Password 设置页面中,找到快捷键设置环节,默认使用快捷键打开后面为空,点击"在扩展也上 ...
- RCP:导航器视图删除操作快捷键失效的解决方案
导航器视图按下“Delete”的时候,会触发删除节点的操作.如果失效,按以下步骤检查: 1.在要删除的节点上点击右键,确定删除操作是否生效.如果没有生效,则按下列位置 a)检查navigator扩展配 ...
- Eclipse 中Alt+/快捷键失效的解决办法。
1.Eclipse下进入Windows ->Preperences ->General ->keys2.把word completion的快捷键设置alt+/删掉! 3.把Conte ...
随机推荐
- table下属标签与标签中间不能加其他任何标签
今天设计网页,很想在table下面的caption下面加hr标签,不能正常解析,后来发现hr标签可以显示,但是用浏览器查看解析,发现hr在table上面进行了解析,不会再caption下面显示, 又连 ...
- Excel快速改变行列的次序
改变行列次序是在Excel中常常需要进行的操作,多数用户的方法是先剪切要调整的行或列,然后选定目标位置,单击菜单“插入”→“剪切单元格”. 事实上,使用键盘来配合的话,改变行列的次序可以更快捷.比 ...
- atitit 短信验证码的源码实现 .docx
atitit 短信验证码的源码实现 .docx 参考 Atitit usrQBM1603短信验证码规范1 主要方法1 源码实现1 参考 Atitit usrQBM1603短信验证码规范 主要方法 L ...
- Mysql 事件(定时任务)
mysql 创建任务(事件) 1.检查数据库事件是否开启,如果 event_scheduler 等于 NO表示开启 SELECT @@event_scheduler; SHOW VARIABLES L ...
- 转 - ubuntu apache2下目录结构
ubuntu apache2下目录结构 原文:http://blog.csdn.net/jibcy/article/details/8060651 在Windows下,Apache的配置文件通常只有一 ...
- JS原生第四篇 (帅哥)
1.1 1. 循环 for(初始化; 退出条件; 增量) { } while(退出条件) { } do { 语句 } while(退出条件) 2. switch( ) 多选1 ...
- 查看 table,view,sp的定义
1, 查看用户创建的Proc,View, UDF,trigger 的定义 sys.sql_modules Returns a row for each object that is an SQL la ...
- 基于PHP实现阿里云开放存储服务
开放存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务.用户可以通过简单的API(REST方式的接口),在任何时间.任何地点.任何互 ...
- Ext.Net常用方法
1.js(Ext)操作 Ext.Msg.alert('系统提示', '未连接血站,该功能暂时不能使用.'); Ext.getCmp("id").getValue();Ext.get ...
- Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
概要 本章是JUC系列中的CopyOnWriteArraySet篇.接下来,会先对CopyOnWriteArraySet进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解 ...