AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VCL: Eingabe Unicodezeichen in Editorcontrol

Ein Thema von ULIK · begonnen am 4. Feb 2021 · letzter Beitrag vom 8. Feb 2021
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#1

VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 13:37
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 13:57
In einem TRichEdit kannst du den vierstelligen Hex-Code eingeben und ALT-X drücken.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

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

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

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 14:12
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
  Mit Zitat antworten Zitat
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
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 14:57
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 .

Geändert von Rolf Frei ( 4. Feb 2021 um 15:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#7

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 15:00
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 15:24
Ω
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
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 15:46
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.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: VCL: Eingabe Unicodezeichen in Editorcontrol

  Alt 4. Feb 2021, 16:00
Ω
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.
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