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;

解决方案 »

  1.   

    sendmessage吗,传个键值过去不就行了,关于具体键值看看以前的贴子,或是自己编个程序测测:)
      

  2.   

    当然通不呀
    type
      TForm1 = class(TForm)
        //...............
      private
        //...............
        FInsert: Boolean; //你没有声明
      end;你要在什么地方实现呢?Edit?Memo?RichEdit?????????
      

  3.   

    unit Unit1;interfaceuses
      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.