2010-07-25 5 views
6

Я хочу, чтобы комбинация клавиш (например, Ctrl + Alt + D) в моем приложении вызывала функцию, но я не хочу, чтобы ярлык отображался в любом меню , Возможно ли иметь ярлык в вашем приложении, который в противном случае невидим?Создание ярлыка приложения Delphi без соответствующего пункта меню

ответ

11

вы можете использовать OnShortCut событие TApplicationEvents компонента этой задачи

проверки этот код

procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; 
    var Handled: Boolean); 
begin 
    if (Msg.CharCode = Ord('D')) and (HiWord(Msg.KeyData) and KF_ALTDOWN <> 0) and (GetKeyState(VK_CONTROL) < 0) then 
    begin 
    ShowMessage('Ctrl+Alt+D Pressed') ; 
    Handled := true; 
    end; 
end; 
+0

Отлично. Работает с удовольствием и не включает никаких компонентов действия. – rossmcm

+2

Если вы уже используете TActionList для других действий в форме, просто добавление другого TAction с требуемым ярлыком является более элегантным и улучшает читаемость. (по предложению Джакомо Дегли Эспости) – dummzeuch

+0

Я не использую списки действий, хотя я, вероятно, должен это сделать. Это приложение, которое начало жизнь, прежде чем я узнал, что это такое, и я никогда не был настолько обеспокоен, чтобы ретро-подгонять их. – rossmcm

8

Да, это возможно. Вы должны добавить объект класса TAction в свою форму. Вы можете указать комбинацию клавиш для Taction, а затем поместить код в событие OnExecute из TAction.

Обратите внимание, что вы не можете добавить Taction непосредственно в свою форму, вы должны поместить TactionList в свою форму, а затем вы можете добавить Taction в свой TActionList.