Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VCL: Eingabe Unicodezeichen in Editorcontrol (https://www.delphipraxis.net/206860-vcl-eingabe-unicodezeichen-editorcontrol.html)

ULIK 4. Feb 2021 12:37

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

Uwe Raabe 4. Feb 2021 12:57

AW: VCL: Eingabe Unicodezeichen in Editorcontrol
 
In einem TRichEdit kannst du den vierstelligen Hex-Code eingeben und ALT-X drücken.

himitsu 4. Feb 2021 13:09

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

ULIK 4. Feb 2021 13:12

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

himitsu 4. Feb 2021 13:41

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:
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)

Rolf Frei 4. Feb 2021 13:57

AW: VCL: Eingabe Unicodezeichen in Editorcontrol
 
Zitat:

Zitat von ULIK (Beitrag 1482214)
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

Das geht wie folgt:
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:

Unicode characters can be entered by holding down Alt, and typing + on the numeric keypad, followed by the hexadecimal code – using the numeric keypad for digits from 0 to 9 and letter keys for A to F – and then releasing Alt .

Uwe Raabe 4. Feb 2021 14:00

AW: VCL: Eingabe Unicodezeichen in Editorcontrol
 
Zitat:

Zitat von ULIK (Beitrag 1482225)
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

Bei einem TMemo könnte man das ungefähr so machen:
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;

TiGü 4. Feb 2021 14:24

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.

https://support.microsoft.com/de-de/...e-6e5116097942

ULIK 4. Feb 2021 14:46

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.

ULIK 4. Feb 2021 15:00

AW: VCL: Eingabe Unicodezeichen in Editorcontrol
 
Zitat:

Zitat von TiGü (Beitrag 1482239)
Ω
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.

https://support.microsoft.com/de-de/...e-6e5116097942

Vielen Dank dafür, kannte ich auch noch nicht. Das sollte dem Kunden als Workaround erst einmal helfen. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz