如何让鼠标移到edit上时,edit里面的里面被选种? 请高手指教一下,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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. 以下是第二种方法,不用生成新的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. delphi 交流群4654765 如何定义消息? 小弟剛學不久,不知道哪裡有資料下載 如何判断输入的字符串是否为两个字母加四个数字? 高分!关于如何在OnTitleClick事件中获得当前字段的字段号! 文件操作问题,在线等待,马上给分 问一个比较菜的问题,请大家帮个忙! 虚荣心,天这么热,我竟穿了5条内裤!!! 这一句SQL怎么写? 删除姓名等于NULL的记录 请问设置主音量的API函数是什么,如果没有,请问如何设置? 问个问题20分奉上!! 简单问题
你是说里面的内容被选中是吗:
上面的方法似乎不大妥,第一次时,可以,但如果你的光标在字符的中间,鼠标移动进去,则里面的文本并没有被选中。
以下是测试过的代码,虽然失去了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.
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.