主题:[请教] 控件上的LostFocus方法程序有没有控制下一焦点的功能?
北京惬意
[专家分:1330] 发布于 2009-11-10 16:48:00
编程时通常希望能根据录入的内容,在LostFocus写代码进行判断,确定下一焦点到哪里去。
可每每总是失败,因而觉得LostFocus方法已经无力控制下一焦点了,要到按顺序的下一控件的GotFocus去解决,这样编程很复杂。
请教各位高师:LostFocus方法程序有没有控制下一焦点的功能?如果没有,还有没有更好的补救方法?
致以诚挚的感谢!
最后更新于:2009-11-10 16:54:00
回复列表 (共23个回复)
沙发
cbl518 [专家分:57140] 发布于 2009-11-10 17:09:00
LostFocus方法,是当一个对象失去焦点时发生。
关键是已经是失去焦点,也就是讲焦点已经转移到其它对象上了~
才发生该事件!
板凳
cbl518 [专家分:57140] 发布于 2009-11-10 17:11:00
1 控件由于用户的操作而失去焦点
2 选中另一个控件或在另一个控件上单击
3 或在代码中用 SetFocus 方法更改焦点。
3 楼
北京惬意 [专家分:1330] 发布于 2009-11-10 17:15:00
十分感谢cbl518大师的解答!
那么我还是要想,在某一控件录入完回车后,是前一控件先失去焦点,还是下一控件先得到焦点?谢谢!
4 楼
cbl518 [专家分:57140] 发布于 2009-11-10 17:24:00
前一控件先失去焦点
下一控件在得到焦点
你的意图是什么???
5 楼
cbl518 [专家分:57140] 发布于 2009-11-10 17:33:00
在 keypress 事件写入:
if nKeyCode=13
NODEFAULT
this.Parent.grid2.SetFocus
endif
6 楼
北京惬意 [专家分:1330] 发布于 2009-11-10 17:41:00
我的意图是:
一个表单上有若干个TEXT或其它控件,在TEXT1录入结束回车后,TEXT1能根据所录入的内容,确定下一焦点去另外哪个控件,而不一定按顺序去下一控件。
7 楼
cbl518 [专家分:57140] 发布于 2009-11-10 17:48:00
在文本框 keypress 事件写入:
if nKeyCode=13
NODEFAULT
this.Parent.指定的text.SetFocus
endif
8 楼
北京惬意 [专家分:1330] 发布于 2009-11-10 17:51:00
[quote]在 keypress 事件写入:
if nKeyCode=13
NODEFAULT
this.Parent.grid2.SetFocus
endif[/quote]
这种方法觉得有两点不太适宜本人。
一是本人通常是在LostFocus中写大量的代码处理录入完的后事,移到keypress去写会不会出现其它问题?
二是考虑用户有时不用回车结束,而是录完用鼠标点其它控件结束,这样就可能不经过if nKeyCode=13了。
9 楼
cbl518 [专家分:57140] 发布于 2009-11-10 18:30:00
这种方法觉得有两点不太适宜本人。
一是本人通常是在LostFocus中写大量的代码处理录入完的后事,移到keypress去写会不会出现其它问题?
源代码还保留在,LostFocus 事件中!其功能不会改变的!
二是考虑用户有时不用回车结束,而是录完用鼠标点其它控件结束,这样就可能不经过if nKeyCode=13了。
如果,用鼠标点其它控件结束,那么焦点就会自动转移到,用户所点的控件上。以上代码无影响的!
10 楼
cbl518 [专家分:57140] 发布于 2009-11-10 18:31:00
老兄试试看就知道了!!!
我来回复