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;