请高手指教一下,谢谢了

解决方案 »

  1.   

    edit里面的里面被选种? 
    你是说里面的内容被选中是吗:
    上面的方法似乎不大妥,第一次时,可以,但如果你的光标在字符的中间,鼠标移动进去,则里面的文本并没有被选中。
    以下是测试过的代码,虽然失去了RAD的效果,但你可以做成组件。
    每当鼠标进入时,Edit中的文件全部被选中:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TMyEdit=class(TEdit)
      public
        procedure CMMouseEnter (var Message: TMessage); message CM_MOUSEENTER;
      end;
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        MyEdit:TMyEdit;
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}procedure TMyEdit.CMMouseEnter (var Message: TMessage);
    begin
      self.SelStart:=0;
      self.SelLength:=length(self.Text);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
     if not assigned(myEdit) then
     begin
      myEdit:=TMyEdit.Create(self);
      myedit.Parent:=self;
     end;
    end;end.
     
      

  2.   

    以下是第二种方法,不用生成新的Edit类,只要处理Edit的窗口过程:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type  TForm1 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        OldEditWndProc: TWndMethod;
      public
        { Public declarations }
        procedure EditWndProc(var Msg: TMessage);
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
       OldEDitWndProc := Edit1.WindowProc;
       Edit1.WindowProc := EditWndProc;
    end;procedure TForm1.EditWndProc(var Msg: TMessage);
    begin
      if Msg.Msg = CM_MOUSEENTER then
      begin
       Edit1.SelStart:=0;
       Edit1.SelLength:=length(Edit1.Text);
      end
      else OldEditWndProc(Msg);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      Edit1.WindowProc:=OldEditWndProc;
    end;end.