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?
+6
A:
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.
Giacomo Degli Esposti
2010-07-25 20:56:41
+4
A:
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;
RRUZ
2010-07-25 20:58:14
Excellent. Works a treat and doesn't involve any action components.
2010-07-25 21:57:01
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)
dummzeuch
2010-07-26 09:45:24
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.
2010-07-26 13:38:50