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?
Creating a Delphi app shortcut with no corresponding menu item
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;
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
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.
© 2022 - 2024 — McMap. All rights reserved.