How to switch insert/overtype mode

<< Click to display table of contents >>

How to switch insert/overtype mode

The overwrite mode is not supported directly, but you can implement it using events.

The code is below.

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

More details and demo: https://www.trichview.com/forums/viewtopic.php?t=171