Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 14:41
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Feb 2021 um 14:52 Uhr)
  Mit Zitat antworten Zitat