如何拦截Firemonkey中的菜单快捷方式事件

时间:2014-09-19 01:31:51

标签: delphi firemonkey

在Firemonkey表单上添加主菜单和单个子菜单项。将子菜单的快捷方式属性设置为Ctrl-A。

无论如何在进入菜单之前拦截Ctrl-A?似乎OnKeyDown形式没有看到它。

1 个答案:

答案 0 :(得分:2)

表单检查是否存在要处理密钥的子组件。如果处理了密钥,那么这就是故事的结束。

这是一种使用内插器阻止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;

如果您正在使用操作,则必须以相同方式覆盖DialogKey的{​​{1}}功能。