Как переключить режим ввода текста: вставка/замена

<< Нажмите, чтобы показать Содержание >>

Как переключить режим ввода текста: вставка/замена

Режим замены текста (когда новый символ, введённый с клавиатуры, заменяет символ справа от каретки) не поддерживается ТРВ-Редактором напрямую.

Код реализации этого режима приведён ниже.

var IgnoreNextChar: Boolean = False;

 

procedure TForm1.RichViewEdit1KeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

  IgnoreNextChar := RichViewEdit1.SelectionExists;

end;

 

procedure TForm1.RichViewEdit1KeyPress(Sender: TObject; var Key: Char);

var rve: TCustomRichViewEdit;

    ItemNo, Offs: Integer;

begin

  if IgnoreNextChar then

  begin

    IgnoreNextChar := False;

    exit;

  end;

  IgnoreNextChar := False;

  if not ((Key=#9or (Key>=' ')) then

    exit;

  rve := RichViewEdit1.TopLevelEditor;

  if rve.SelectionExists then

    exit;

  ItemNo := rve.CurItemNo;

  Offs  := rve.OffsetInCurItem;

  if (Offs>=rve.GetOffsAfterItem(ItemNo)) then

  begin 

    if (ItemNo+1<rve.ItemCountand 

       not rve.IsFromNewLine(ItemNo+1then

    begin 

      inc(ItemNo); 

      Offs := rve.GetOffsBeforeItem(ItemNo); 

    end 

    else 

      exit; 

  end

  rve.SetSelectionBounds(ItemNo, Offs, ItemNo, Offs+1); 

  rve.Invalidate; 

end