Creating a Delphi app shortcut with no corresponding menu item
Asked Answered
S

2

7

I want to have a shortcut key combination (like Ctrl+Alt+D) in my app to invoke a function, but I don't want the shortcut to appear on any menu. Is it possible to have a shortcut available in your app that is otherwise invisible?

Stannum answered 25/7, 2010 at 20:44 Comment(0)
R
12

you can use the OnShortCut event of the TApplicationEvents component to this task

check this code

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;
Rhombencephalon answered 25/7, 2010 at 20:58 Comment(3)
Excellent. Works a treat and doesn't involve any action components.Stannum
If you are already using a TActionList for the other actions on the form, just adding another TAction with the required shortcut is more elegant and improves readability. (as suggested by Giacomo Degli Esposti)Audrit
I'm not using actionlists although I probably should, It's an app that started life before I knew what they were and I've never been bothered enough to retro-fit them.Stannum
G
8

Yes it's possible. You must add an Object of class TAction to your form. You can specify a keyboard shortcut for the Taction and then put your code in event OnExecute of the TAction.

Note that you cannot add a Taction directly to your form, you must put a TactionList on your form and then you can add a Taction to your TActionList.

Garceau answered 25/7, 2010 at 20:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.