关于录入焦点的简单问题 用鼠标把焦点从Edit1切换到Edit2时,触发Edit1的OnExit,在OnExit事件中执行Applicatio.MessageBox,关闭提示框后,光标在Edit2上,但却不能输入,必须再点一下才可输入,请教高手如何解决,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道为虾米。。非得SETFOCUS两次才行 Application.MessageBox('ddd','dd',MB_OK); edit2.SetFocus; edit2.SetFocus; 问题是不能写Edit2.SetFocus,用鼠标点的有可能不是Edit2,而是Edit3,Edit4... 不一定是Edit2获得焦点才触发OnExit,也有可能是其它Edit控件 这样就可以了:procedure TForm1.Edit1Exit(Sender: TObject);begin Application.MessageBox('ddd','dd',MB_OK);end;procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin edit2.SetFocusend; To ksaiy(消失在人海): 可能是我没有描述清楚,不太明白写KeyDown有什么用,我的问题是,在Form上有多个Edit,在Edit1的OnExit中写了Application.MessageBox('ddd','dd',MB_OK); 焦点在Edit1上,如果用鼠标点其它Edit会触发Edit1的OnExit弹出提示框,点确定关闭提示框后,当前获得焦点的Edit不能输入,必须用鼠标点一下后才可以输入,我用笨办法甘甘基本实现了,但不太好Var aHandle: THandle;begin aHandle := GetFocus; Application.MessageBox('aa', '提示', MB_OK+MB_ICONINFORMATION); PostMessage(aHandle, WM_LBUTTONDOWN, 0, 0); PostMessage(aHandle, WM_LBUTTONUP, 0, 0); PostMessage(aHandle, EM_SETSEL, 0, MaxInt);end; 同意 ksaiy(消失在人海) 的看法 当前获得焦点的Edit不能输入,必须用鼠标点一下后才可以输入?? 还有这事情么。 to beyondtkl(大龙驹<无悔这一生 恩德汝>) 可以自己试一下呀,用键盘切换焦点没问题,用鼠标点就有这问题,请帮忙,谢谢! Application.MessageBox('aa', '提示', MB_OK+MB_ICONINFORMATION);换成MessageDlg试试 呵呵,这是一个老问题了,Bug???,没见到过有什么太好的解决方法。 再问一个dbgrid的问题(菜鸟提问) 怎么通过代码设置文件的版本号? 小问题,在线等!马上给分! 类型转换问题 sql2000的表用什么调用? 怎样得到和设置memo的滚动条的宽度和高度? delphi中有无类似stl的标准算法库? StringGrid的一个难题!100分 大家好,想问一下,觉得Pascal比C/C++好用的朋友,来投一票,我可是坚决支持Pascal的!! 谁能知道李维先生的电子邮箱地址或其他联系方法? 请问用Delphi从事数据库领域的要花多长的时间 才能分别拿到5K,7K,10K月薪在深圳? 有没有碰到过这样奇怪的问题??
edit2.SetFocus;
edit2.SetFocus;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
Application.MessageBox('ddd','dd',MB_OK);
end;procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
edit2.SetFocus
end;
可能是我没有描述清楚,不太明白写KeyDown有什么用,我的问题是,在Form上有多个Edit,在Edit1的OnExit中写了Application.MessageBox('ddd','dd',MB_OK); 焦点在Edit1上,如果用鼠标点其它Edit会触发Edit1的OnExit弹出提示框,点确定关闭提示框后,当前获得焦点的Edit不能输入,必须用鼠标点一下后才可以输入,我用笨办法甘甘基本实现了,但不太好
Var
aHandle: THandle;
begin
aHandle := GetFocus;
Application.MessageBox('aa', '提示', MB_OK+MB_ICONINFORMATION);
PostMessage(aHandle, WM_LBUTTONDOWN, 0, 0);
PostMessage(aHandle, WM_LBUTTONUP, 0, 0);
PostMessage(aHandle, EM_SETSEL, 0, MaxInt);
end;
可以自己试一下呀,用键盘切换焦点没问题,用鼠标点就有这问题,请帮忙,谢谢!
换成MessageDlg试试