我正在尝试让管理员通过 Ctrl+单击来启用/禁用我的应用程序主菜单中的菜单项。为此,我在主窗体中注入了带有自定义版本的 TMenuItem 类,并覆盖了 Click 虚拟方法,如下所示:
uses
Forms, Menus;
type
TMenuItem = class(Menus.TMenuItem)
public
ControlActivationState: Boolean;
procedure Click; override;
end;
TMyMainForm = class(TForm)
...
procedure TMenuItem.Click;
begin
if ControlActivationState and IsKeyPressed(VK_CONTROL) then
Self.Enabled := not Self.Enabled
else
inherited;
end;
它有效,但仅适用于顶级菜单。为什么顶级菜单项即使在禁用时也会收到 OnClick 事件,而其他菜单项却没有?有没有办法让子菜单项也接收这些事件?