【发布时间】:2013-08-07 13:11:33
【问题描述】:
我正在尝试让管理员通过 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 事件,而其他菜单项却没有? 有没有办法让子菜单项也接收这些事件?
【问题讨论】:
标签: delphi event-handling controls mouseevent vcl