eevee писал(а):Данный код не работает совсем.
Совсем, совсем?!!!
В чем же он не работает?!!! Что не так?
попробуйте вместо VK_A..VK_Z поставить 65..90
и "заюзать" LCLProc
Модератор: Модераторы
eevee писал(а):Данный код не работает совсем.
sadФsdФФФФФdsФsdФsdФsdФФsФФdФФФФФФФФФФФФФФФФФФaФФaФФasФФsФФsФФsФФsФФsФФФФФФ
procedure TMainForm.MemoUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
var
pos: TPoint;
key_press: integer;
str: string;
begin
pos.X:=Memo.CaretPos.X;
pos.Y:=Memo.CaretPos.Y;
key_press := ord(Utf8ToAnsi(UTF8Key)[1]);
if (key_press in [163,179,192..255]) then
begin
UTF8Key := '';
end;
if UTF8Key = '' then
begin
str := Memo.Lines[pos.Y];
Insert(AnsiToUtf8(chr(key_press)),str,pos.X);
Memo.Lines[pos.Y] := str;
pos.X := pos.X + 1;
Memo.CaretPos := pos;
end;
end;
Procedure TForm1.Memo1UTF8KeyPress(Sender: TObject; Var UTF8Key: TUTF8Char);
Begin
UTF8Key := #0;
Memo1.Text := Memo1.Text + 'ф';
end;
procedure TMainForm.MemoUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
var
pos: TPoint;
key_press: integer;
key_res: TUTF8Char;
str: string;
begin
pos.X:=Memo.CaretPos.X;
pos.Y:=Memo.CaretPos.Y;
if pos.X < 68 then
begin
if telegraf then
begin
key_press := ord(Utf8ToAnsi(UTF8Key)[1]);
if (key_press in [97..122]) then
begin
UTF8Key[1] := chr(key_press-32);
end
else
begin
case key_press of
163: begin
key_res := 'Е';
UTF8Key := '';
end;
179: begin
key_res := 'Е';
UTF8Key := '';
end;
192: begin
key_res := 'Ю';
UTF8Key := '';
end;
193: begin
key_res := 'А';
UTF8Key := '';
end;
194: begin
key_res := 'Б';
UTF8Key := '';
end;
195: begin
key_res := 'Ц';
UTF8Key := '';
end;
196: begin
key_res := 'Д';
UTF8Key := '';
end;
197: begin
key_res := 'Е';
UTF8Key := '';
end;
198: begin
key_res := 'Ф';
UTF8Key := '';
end;
199: begin
key_res := 'Г';
UTF8Key := '';
end;
200: begin
key_res := 'Х';
UTF8Key := '';
end;
201: begin
key_res := 'И';
UTF8Key := '';
end;
202: begin
key_res := 'Й';
UTF8Key := '';
end;
203: begin
key_res := 'К';
UTF8Key := '';
end;
204: begin
key_res := 'Л';
UTF8Key := '';
end;
205: begin
key_res := 'М';
UTF8Key := '';
end;
206: begin
key_res := 'Н';
UTF8Key := '';
end;
207: begin
key_res := 'О';
UTF8Key := '';
end;
208: begin
key_res := 'П';
UTF8Key := '';
end;
209: begin
key_res := 'Я';
UTF8Key := '';
end;
210: begin
key_res := 'Р';
UTF8Key := '';
end;
211: begin
key_res := 'С';
UTF8Key := '';
end;
212: begin
key_res := 'Т';
UTF8Key := '';
end;
213: begin
key_res := 'У';
UTF8Key := '';
end;
214: begin
key_res := 'Ж';
UTF8Key := '';
end;
215: begin
key_res := 'В';
UTF8Key := '';
end;
216: begin
key_res := 'Ь';
UTF8Key := '';
end;
217: begin
key_res := 'Ы';
UTF8Key := '';
end;
218: begin
key_res := 'З';
UTF8Key := '';
end;
219: begin
key_res := 'Ш';
UTF8Key := '';
end;
220: begin
key_res := 'Э';
UTF8Key := '';
end;
221: begin
key_res := 'Щ';
UTF8Key := '';
end;
222: begin
key_res := 'Ч';
UTF8Key := '';
end;
223: begin
key_res := 'Ь';
UTF8Key := '';
end;
255: begin
key_res := 'Ь';
UTF8Key := '';
end;
end;
end;
end;
if UTF8Key = '' then
begin
str := Memo.Lines[pos.Y];
UTF8Insert(key_res,str,pos.X+1);
Memo.Lines[pos.Y] := str;
pos.X := pos.X + 1;
Memo.CaretPos := pos;
end;
end
else
begin
if (ord(Utf8ToAnsi(UTF8Key)[1]) <> 13) and (ord(Utf8ToAnsi(UTF8Key)[1]) <> 8) then
UTF8Key := '';
end;
end;
eevee писал(а):Тогда да - замена происходит. Если вводить быстро, то проскакивают еще и оригинальные буквы ))))))
procedure TForm1.Memo1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
if UTF8Key=SysToUTF8('Ф') then memo1.text:=memo1.text+' '+UTF8ToSys(UTF8Key);
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50