Mit der Tastenkombination AltGr+q erhält man auf meiner deutschen Tastatur das @, mit AltGr+e das € usw.
Nun möchte ich gern mit AltGr+a z.B. das ¼, mit AltGr+s das ½ und mit AltGr+d das ¾ als Zeichen eingeben.
Folgender Code funktioniert aber nicht:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Forms, StdCtrls, LCLType, Controls, Classes;
type
{ TForm1 }
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
private
Taste : word;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
var
i: Integer;
begin
case Taste of
//81 : UTF8Key:='¼'; // Taste AltGr+q
//81 : UTF8Key:=#194#188; // Taste AltGr+q
65 : UTF8Key:=#194#188; // Taste AltGr+a = '¼'
83 : UTF8Key:=#194#189; // Taste AltGr+s = '½'
68 : UTF8Key:=#194#190; // Taste AltGr+d = '¾'
end;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (ssAlt in Shift) AND (ssCtrl in Shift) then Taste:=Key else Taste:=0;
end;
end.
Eine Tastenkombination, wie z.B. AltGr-q funktioniert, da dort ja schon das @ erzeugt wird.
Warum ist das so und wie bekomme ich das trotzdem hin? Hat jemand eine Idee?