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