【发布时间】:2014-09-19 01:31:51
【问题描述】:
在 Firemonkey 表单上添加一个主菜单和一个子菜单项。将子菜单的快捷方式属性设置为 Ctrl-A。
在进入菜单之前是否有拦截 Ctrl-A 的方法?好像OnKeyDown这个表单没看到。
【问题讨论】:
标签: delphi firemonkey
在 Firemonkey 表单上添加一个主菜单和一个子菜单项。将子菜单的快捷方式属性设置为 Ctrl-A。
在进入菜单之前是否有拦截 Ctrl-A 的方法?好像OnKeyDown这个表单没看到。
【问题讨论】:
标签: delphi firemonkey
表单检查是否有子组件想要处理该键。如果钥匙被处理,那么故事就结束了。
这是一种使用插入器防止TMenuItem 处理密钥的快速而肮脏的方法。
type
TMenuItem = class(FMX.Menus.TMenuItem)
protected
procedure DialogKey(var Key: Word; Shift: TShiftState); override;
end;
procedure TMenuItem.DialogKey(var Key: Word; Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key = 65){A} then exit;
inherited;
end;
如果您正在使用操作,那么您必须以相同的方式覆盖 TActionList 的 DialogKey 函数。
【讨论】:
OnKeyDown 将永远不会触发。