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





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