- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

Overwrite in TMemo and TEdit

Question:

How can I get the TEdit and TMemo controls to have a overwrite capability?

Answer:

The Windows TEdit and TMemo controls have no overwrite capability.

It is possible to emulate this behavior however, by setting the

SelLength property of the edit or memo control to one during the

processing of the KeyPress event. This causes the character at the

current position of the caret to be overwritten.



The following example demonstrates emulation of an overwrite

capability of a TMemo component. The state of the overwrite mode can

be toggled by pressing the insert key.



Example:



type

  TForm1 = class(TForm)

    Memo1: TMemo;

    procedure Memo1KeyDown(Sender: TObject; var Key: Word;

      Shift: TShiftState);

    procedure Memo1KeyPress(Sender: TObject; var Key: Char);

  private

    { Private declarations }

    InsertOn : bool;

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

  if (Key = VK_INSERT) and (Shift = []) then

    InsertOn := not InsertOn;

end;



procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);

begin

  if ((Memo1.SelLength = 0) and

      (not InsertOn)) then

    Memo1.SelLength := 1;

end;






* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile