Einzelnen Beitrag anzeigen

somby

Registriert seit: 21. Jun 2016
12 Beiträge
 
#53

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 17. Aug 2016, 09:23
Hallo "derMischka",
schön, dass du wieder mal an der Unit oWinApiUnicode.pas
gearbeitet hast. Zu deiner Version habe ich auch noch
einiges ergänzt:

- TextOut
- PeekMessage
- GetTextExtentExPoint

Beim testen mit einer kyrillischen Bildschirmtastatur
fiel mir auf, dass keine WideChar-Tastencodes ankamen.
Das lag daran, dass Delphi7 in der Klasse TWinControl der
Unit Controls in der Botschaft WM_CHAR die protected Funktion
DoKeyPress aufruft, die wiederum KeyPress aufruft und hier das
WideChar auf Char beschneidet.
Um das zu umgehen, wurde in der Klasse TWinControl die Botschaft
WM_CHAR durch eine Hilfsklasse TChWinControl neu belegt.
Bei der Verwendung von OnKeypress kann, obwohl nur
ein Char übergeben wird, trotzdem das WideChar abgefragt werden:
z.B.:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var UniKey: WideChar absolute Key;
begin
....
end;

Ich nutze oWinApiUnicode schon seit einiger Zeit mit gutem
Erfolg.

Noch eine kleine Bemerkung betrifft meine vielleicht eigenartige
Blockstruktur im Quellcode (begin am ende usw.), z.B.:

if ... then begin
...
end;


Ich nutze diese
Struktur schon seit vielen Jahren mit gutem Erfolg, da diese Struktur im Gegensatz
zu
if ... then
begin
...
end;
eine sehr gute Blocklesbarkeit garantiert. Also bitte nicht ärgern wenn das
für dich und die anderen Nutzer etwas merkwürdig erscheint.

Viele Grüße
Somby
Angehängte Dateien
Dateityp: zip oWinApiUnicode.zip (17,8 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat