![]() |
VCL: Eingabe Unicodezeichen in Editorcontrol
Heute ist durch einen Kunden eine Frage aufgekommen: wie kann ich in einem Editor Control das Ohm Zeichen (Unicode u+03a9) eingeben? Normalerweise funktioniert es ja mit ALT+nnnn auf dem Zahlenblock. Aber bei '3a9' haut das natürlich nicht hin. Alt + der entsprechende Dezimalwert 937 funktionieren aber auch nicht.
In LibreOffice oder anderen Programmen kann man so etwas machen, in dem man '3a9' eingibt und dann 'ALT+C' drückt. Gibt es so etwas auch für VCL Controls? Bzw., da ich es in einem selbst geschriebenen Editor verwenden will, gibt es hier irgendwelche fertige Unterstützungsroutinen, die man zum Ersetzen verwenden kann? Danke, Uli |
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
In einem TRichEdit kannst du den vierstelligen Hex-Code eingeben und ALT-X drücken.
|
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Eigenes Programm und auch änderbar?
Für so Dinge wie Ω, Ø und ± haben wir im Form.OnKeyDown (KeyPreveiw) eigene ShortCut eingebaut. Bzw., inzwischen ist das eine kleine Tabelle, wo die Kunden ShortCuts eintragen können und dazu ein Zeichen oder ganze Texte, welches dann in Edit.SelText reingeschrieben wird. Wenn nur einmalig/selten: [Win] charmap [Enter] ... suchen und dann Copy&Paste |
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Danke Uwe, das hilft schon mal weiter. Jetzt muß ich nur noch herausfinden, wie das dort gemacht wird. Ich benötige das Ganze nämlich für einen selbst geschriebenen Editor :(
@himitsu: es muß leider eine allgemeine Lösung sein. Eine Ersetzung nur für einzelne Zeichen hilft mir leider nichts |
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
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:
Hexadezimal ließe sich auch umsetzen.
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; 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) |
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Zitat:
Alt drücken und halten, dann das Plus (+) Zeichen auf dem Zahlenblock und danach der HEX Code mit den Zahlen auf den Zahlenblock und den Zeichen A-F auf der normalen Tastatur. Habe das soeben so in einem TMemo getestet und es geht. ALT+03a9 ergibt das Ohm-Zeichen. Zitat:
|
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Zitat:
Delphi-Quellcode:
procedure TForm599.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var code: Integer; begin if (Shift = [ssAlt]) and (Key = Ord('X')) then begin Memo1.SelLength := -4; if TryStrToInt('$' + Memo1.SelText, code) then begin Memo1.SelText := Chr(code); Key := 0; end; end; end; |
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Ω
Wenn der Kunde ein geupdatetes Windows 10 hat, kann er in einem beliebigen Editor auch die Windows-Logo-Taste + . (Punkt zwischen Komma und Strich) drücken. Auf dem dritten "Tab" oben kommt man zu allen möglichen Sonderzeichen. ![]() |
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Schon einmal vielen Dank für all die Hinweise und Ratschläge! Ich schau die Tage was sich davon in die bestehende Anwendung integrieren läßt.
|
AW: VCL: Eingabe Unicodezeichen in Editorcontrol
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz