Em Einfachsten sind ShortCuts/Tasten, die nur aus einer Sequenz bestehen, aber mehr/längeres geht auch recht "einfach".
z.B. Ordinal ein Char eingeben: mit AltGr+32 ein Leerzeichen
Delphi-Quellcode:
type
TForm10 = class(TForm)
RichEdit1: TRichEdit;
procedure RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure RichEdit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
FIsInput: Boolean;
FTheChar: Char;
end;
procedure TForm10.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if FIsInput then begin
// hier vielleicht auf 0-9 prüfen und wenn nicht, dann FIsInput:=False und kein Key:=0
Key := 0;
Exit;
end;
if (Key = VK_CONTROL) and (Shift = [ssCtrl]) then begin
FIsInput := True;
FTheChar := #0;
Key := 0;
Exit;
end;
{...}
end;
procedure TForm10.RichEdit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if FIsInput then begin
if Key = VK_CONTROL then begin
RichEdit1.SelText := FTheChar;
FIsInput := False;
end else
if Key in [Ord('0')..Ord('9')] then
FTheChar := Char(Ord(FTheChar) * 10 + Key - Ord('0'));
Key := 0;
Exit;
end;
{...}
end;
Hexadezimal ließe sich auch umsetzen.
Oder in KeyEvents der Form (KeyPreview) und dort dann in (ActiveContol as TCustomEdit).SelText schreiben
Irgendwo waren neben den Windows-VK_XYZ auch neue platformunabhängige vkXyz in aktuellen Delphis drin (ich glaub da gab es dann auch sowas wie vk0 bis vk9)