trichview.support
Re: Insert/Overtype Status |
Author |
Message |
Sergey Tkachenko |
Posted: 02/10/2003 13:57:35 Is character will be selected, some operations will be performed inconsistently. For example, Backspace will delete the selected character. As a visual indication, you can for example make caret wider assigning 2 to RichViewEditCaretWidth from RVERVData.pas > 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" <svt@trichview.com> wrote in message > news:3e464d89@support.torry.net... > > 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