trichview.support
Re: Insert/Overtype Status |
Author |
Message |
Louis Kessler |
Posted: 02/10/2003 2:22:34 Sergey: This works, but is there any way to keep that next character selected as a visual indicator to the user that it is the character that will next be overwritten? The selection gets deleted by TCustomRichViewEdit.KeyPress just after the code below is executed. Louis Kessler Winnipeg, Manitoba, Canada "Sergey Tkachenko" <[email protected]> wrote in message news:[email protected]... > RichView does not support overwrite mode directly. > But one solution is possible - selecting a next character after caret on key > pressing. 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; > > > |
Powered by ABC Amber Outlook Express Converter