读书人

Edit控件的OnEnter事件中打开一个新窗

发布时间: 2013-11-29 13:49:33 作者: rapoo

Edit控件的OnEnter事件中打开一个新窗体后如何重获焦点?
一个Edit控件,OnEnter事件中打开一个新窗体Form,要求窗体弹出后,Edit控件获得焦点,同时可以输入内容,不用鼠标点击切换焦点,如何实现?


OnEnter事件中写如下代码,无法实现该效果:

Form1 := TForm.Create(Application);
Form1.Show;
Edit1.SetFocus;


求更好的方法,谢各位!

[解决办法]
form1上有个edit1,form1中显示form2,在form2的OnShow事件里设置form1.edit1.SetFocus
[解决办法]

引用:
PostMessage(Edit1.Handle, WM_SETFOCUS, 0, 0);
这种方法也试过了,可以获焦,也可以自动选中Edit1中的文本,但是无法输入内容。
var
Form1: TForm2;
begin
Form1 := TForm2.Create(Application);
Form1.Show;
Edit1.SetFocus;
PostMessage(Edit1.Handle, WM_SETFOCUS, 0, 0);

我这样没问题啊.可以获焦点也可以自动选中
[解决办法]
Type
TMyEdit = class(TEdit)
protected
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
end;

{ TMyEdit }
procedure TMyEdit.WMSetFocus(var Message: TWMSetFocus);
begin
if not Form2.Visible then begin
SendMessage(Handle , WM_KILLFOCUS , 0 , 0);
Form2.Show;
SetFocus;
Message.Result := 1;
exit;
end;
inherited;
end;

读书人网 >.NET

热点推荐