[How to] How to switch Insert/Overtype mode
Posted: Mon Sep 26, 2005 4:53 pm
The overwrite mode is not supported directly, but you can implement it using events.
The code is below.
The code is below.
Code: Select all
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;