Главная страница | назад





Article #16802: Overwrite in TMemo and TEdit

 Question and Answer Database

FAQ1802D.txt   Overwrite in TMemo and TEdit
Category   :VCL
Platform    :All
Product    :All 32 bit  

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;



7/16/98 4:31:28 PM
 

Last Modified: 12-NOV-99