Эх, пердюмонокль какой, усложнять, так усложнять  можно ещё G-кодом (здесь на весь латинский алфавит в кверти формате, уберите лишние знаки)
Код:
function zn(ds: byte): char;
const
scn: array[0..1] of array [0..25] of byte =
((81, 87, 69, 82, 84, 89, 85, 73, 79, 80, 65, 83, 68,
70, 71, 72, 74, 75, 76, 90, 88, 67, 86, 66, 78, 77 ),
(201,214,211,202,197,205,195,216,217,199,212,219,194,
192,207,208,206,203,196,223,215,209,204,200,210,220));
var
i: integer;
begin
Result:= char(ds);
for i := 0 to 25 do
if (ds = scn[0, i]) or
(ds = scn[0, i] + 32) or
(ds = scn[1, i]) or
(ds = scn[1, i] + 32) then
begin
Result:= char(scn[0, i]);
Exit;
end;
end;
использование
Код:
...
if zn(Byte(Key)) in ['G'{,'A','R','B','','','',''}] then
with edtCurFrame do
begin
s:= Text;
if Length(s) > 0 then
s[1]:= zn(Byte(Key))
else
s:= zn(Byte(Key));
Key:= #0;
Text:= s;
SelLength:= 0;
SelStart:= Length(Text);
end;
...
из плюсов - на все нужные знаки будет такое одно.
З.Ы. Немного сократил букофф
|