delphi程序中的隐藏主菜单,使用Alt键自动显示

时间:2011-06-24 14:25:41

标签: delphi menu delphi-xe

首先,我要说我在Windows Vista和Windows 7中篡改了此功能。其次,我想这样做。 Here是一个问题,询问如何在WPF中执行我想要的操作。

我想做同样的事情,但是在Delphi中,使用VCL库存组件,TMainMenu或Action Manager菜单,或者一些可用的第三方组件,甚至是Toolbar2000或其他库。

Windows Vista / Windows 7资源管理器主菜单的功能:

  • 应用启动时无法看到
  • 按下并释放Alt使其可见
  • 再次按下并释放Alt使其再次隐身
  • 重复的。
  • 热键可以处理菜单项,即使菜单不可见*

(* Windows资源管理器热键示例:Microsoft Windows资源管理器中的Ctrl + A即使在菜单不可见时也会选择所有菜单,Alt + T =调出工具弹出菜单,即使隐藏整个菜单也是如此。)

enter image description here

更新:使用已接受答案的演示可以下载here。 (HiddenMenu.zip)

1 个答案:

答案 0 :(得分:32)

照常使用TMainMenu TActionList

然后做

procedure TForm1.FormShow(Sender: TObject);
begin
  Self.Menu := nil;
end;

(或者只是在设计时删除Menu关联)和

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_MENU) or (Key = VK_F10) then
    Menu := MainMenu1;
end;

procedure TForm1.WndProc(var Message: TMessage);
begin
  inherited;
  case Message.Msg of
    WM_EXITMENULOOP:
      SetMenu(Handle, 0);
  end;
end;

不要忘记将表单KeyPreview设置为true

(请注意,由于快捷方式由TActionList处理,即使菜单“已消失”,它们也能正常工作。)