Ich weiß ja nicht, was du machst, aber das hier funktioniert problemlos bei mir und das ist auch, wie man TShortcutEvent verwendet:
Delphi-Quellcode:
procedure TollesEvent(var Msg: TWMKey; var Handled: Boolean);
var
ss: TShiftState;
begin
ss := KeyDataToShiftState(Msg.KeyData);
if ss = [ssShift] then
if Msg.Charcode = VK_NUMPAD0 then // =96
TueTolleSachen();
end;
Wenn man nicht weiß, was eigentlich los ist:
Delphi-Quellcode:
uses Menus;
procedure TollesEvent(var Msg: TWMKey; var Handled: Boolean);
var
ss: TShiftState;
begin
ss := KeyDataToShiftState(Msg.KeyData);
Caption := IfThen(ssCtrl in ss, 'Strg+')
+ IfThen(ssShift in ss, 'Umsch+')
+ IfThen(ssAlt in ss, 'Alt+')
+ ShortCutToText(Msg.CharCode) + '/'
+ IntToStr(Msg.CharCode);
end;
Ich vermute "TollesEvent" ist "FormShortCut"
Hab deinen Code im FormShortCut unverändert eingefügt - und funktioniert nicht (bei Shift + NumPadX)
Unter "funktioniert" verstehe ich, um bei deinem erstgenannten Code zu bleiben, dass die Prozedur TueTolleSachen() ausgeführt wird, wenn ich Shift + Numpad1 (bei deinem Beispiel NumPad0) drücke.
Falls es dir entgangen ist:
So ziemlich genau das, was du vorschlägst mach ich in dem in #1 gezeigten FormShortcut.