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; Сейчас этот форум просматривают: Google [Bot] и гости: 1