Скрытое главное меню в программе delphi, автоматически отображается с помощью клавиши Alt

во-первых, позвольте мне сказать, что я ненавижу эту функцию в Windows Vista и Windows 7. Во-вторых, я хочу это сделать. здесь это вопрос о том, как сделать то, что я хочу здесь, в WPF.

Я хочу сделать то же самое, но в Delphi, используя компоненты VCL stock, меню TMainMenu или Action Manager или некоторые доступные сторонние компоненты, даже Toolbar2000 или другую библиотеку.

функция проводника Windows Vista / Windows 7 главное меню:

  • это не видно, когда приложение запускается
  • нажатие и освобождение Alt делает его видимым
  • нажатие и освобождение Alt снова делает его невидимым снова
  • repeatable.
  • горячие клавиши работают с пунктами меню, даже если меню невидимо*

(* горячие клавиши Проводника Windows пример: Ctrl+A в Проводнике Microsoft Windows выбирает все, даже если меню невидимы, Alt+T = открыть всплывающее меню " Инструменты, даже когда все меню спрятано).

enter image description here

обновление: демо с помощью принятого ответа можно загрузить здесь. (HiddenMenu.zip)

1 ответов


использовать 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 to true.

(обратите внимание, что, поскольку ярлыки обрабатываются TActionList, они работают, даже если меню "исчезло".)