Подтвердить что ты не робот

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

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

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

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

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

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

enter image description here

Обновление: Демо с использованием принятого ответа можно скачать здесь. (HiddenMenu.zip)

4b9b3361

Ответ 1

Используйте TMainMenu с TActionList, как обычно.

Тогда do

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, они работают, даже если меню "ушло".)