trichview.com

trichview.support




Re: Insert/Overtype Status


Return to index


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" <[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