Ist das nicht eher ein Fall für "OnShortCut"?
Code:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
if ActiveControl is TEdit then
begin
if (Msg.CharCode = Ord('2')) and (ssCtrl in KeyDataToShiftState(Msg.KeyData)) then begin
PostMessage(ActiveControl.Handle, WM_CHAR, $2082, 0);
Handled := true;
end;
end;
end;
"Handled := true;" sorgt dafür, dass die Meldung nicht an OnKeyDown und folgende weitergeleitet wird.