<< 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=#9) or (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.ItemCount) and
not rve.IsFromNewLine(ItemNo+1) then
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