First, let me say that I abominate this feature in Windows Vista and Windows 7. Second, I want to do it. Here is a question asking how to do what I want here, in WPF.
I want to do the same thing, but in Delphi, using VCL stock components, TMainMenu or Action Manager menus, or some available third party components, even Toolbar2000 or some other library.
Feature of Windows Vista/Windows 7 explorer main-menus:
(* Windows Explorer Hotkeys Example: Ctrl+A in Microsoft Windows Explorer selects all even when the menus are invisible, Alt+T = bring up Tools popup menu, even when the whole menu is hidden).
Update: Demo using accepted answer can be downloaded here. (HiddenMenu.zip)
Use a TMainMenu
with a TActionList
as usual.
Then do
procedure TForm1.FormShow(Sender: TObject);
begin
Self.Menu := nil;
end;
(or simply remove the Menu
association at design time) and
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_MENU) or (Key = VK_F10) then
Menu := MainMenu1;
end;
and
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited;
case Message.Msg of
WM_EXITMENULOOP:
SetMenu(Handle, 0);
end;
end;
Don't forget to set the form's KeyPreview
to true
.
(Notice that, since the shortcuts are handled by the TActionList
, they work even if the menu is 'gone'.)