首先,我要说我在Windows Vista和Windows 7中篡改了此功能。其次,我想这样做。 Here是一个问题,询问如何在WPF中执行我想要的操作。
我想做同样的事情,但是在Delphi中,使用VCL库存组件,TMainMenu或Action Manager菜单,或者一些可用的第三方组件,甚至是Toolbar2000或其他库。
Windows Vista / Windows 7资源管理器主菜单的功能:
(* Windows资源管理器热键示例:Microsoft Windows资源管理器中的Ctrl + A即使在菜单不可见时也会选择所有菜单,Alt + T =调出工具弹出菜单,即使隐藏整个菜单也是如此。)
更新:使用已接受答案的演示可以下载here。 (HiddenMenu.zip)
答案 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
处理,即使菜单“已消失”,它们也能正常工作。)