procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := True;
end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_INSERT: FInsert := not FInsert;
end;
end;
begin
KeyPreview := True;
end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_INSERT: FInsert := not FInsert;
end;
end;
type
TForm1 = class(TForm)
//...............
private
//...............
FInsert: Boolean; //你没有声明
end;你要在什么地方实现呢?Edit?Memo?RichEdit?????????
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1Change(Sender: TObject);
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
FInsert: Boolean;
procedure SetInsert(const Value: Boolean);
{ Private declarations }
public
{ Public declarations }
property RInsert: Boolean read FInsert write SetInsert;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1Change(Sender: TObject);
begin
if FInsert then TEdit(Sender).SelLength := 1;
end;procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_HOME: if FInsert then begin
TEdit(Sender).SelStart := 0;
TEdit(Sender).SelLength := 1;
end;
VK_END: if FInsert then begin
TEdit(Sender).SelStart := Length(TEdit(Sender).Text) - 1;
TEdit(Sender).SelLength := 1;
end;
VK_LEFT: if FInsert then begin
TEdit(Sender).SelStart := TEdit(Sender).SelStart - 1;
TEdit(Sender).SelLength := 1;
end;
VK_RIGHT: if FInsert then begin
TEdit(Sender).SelStart := TEdit(Sender).SelStart - 1;
TEdit(Sender).SelLength := 1;
end;
VK_INSERT: RInsert := not FInsert;
end;
end;procedure TForm1.SetInsert(const Value: Boolean);
begin
FInsert := Value;
if FInsert then
Edit1Change(Edit1)
else Edit1.SelLength := 0;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.AutoSelect := False;
end;end.