Einzelnen Beitrag anzeigen

BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#7

AW: Tastatureingabe umwandeln

  Alt 12. Jun 2023, 12:00
Ja, ist besser:
Delphi-Quellcode:
procedure TMyForm.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
const
  SUPERSCRIPT: Array [Ord('0') .. Ord('9')] of Word =
    ($2070, $00B9, $00B2, $00B3, $2074, $2075, $2076, $2077, $2078, $2079);
var
  Key: Word;
begin
  if (ActiveControl is TEdit) then
  begin
    Key := Msg.CharCode;
    if (Key in [Ord('0') .. Ord('9')]) then
    begin
      if (KeyDataToShiftState(Msg.KeyData) = [ssCtrl]) then
        Key := $2080 + (Key - Ord('0'))
      else if (KeyDataToShiftState(Msg.KeyData) = [ssAlt]) then
        Key := SUPERSCRIPT[Key]
      else
        Exit;

      PostMessage(ActiveControl.Handle, WM_CHAR, Key, 0);
      Handled := True;
    end;
  end;
end;
Der Vorteil dabei ist, dass man das KeyPreview des Formulars nicht setzen muss...
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)

Geändert von BigAl (12. Jun 2023 um 12:29 Uhr)
  Mit Zitat antworten Zitat