主题:[请教] 控件上的LostFocus方法程序有没有控制下一焦点的功能?
北京惬意
[专家分:1330] 发布于 2009-11-10 16:48:00
编程时通常希望能根据录入的内容,在LostFocus写代码进行判断,确定下一焦点到哪里去。
可每每总是失败,因而觉得LostFocus方法已经无力控制下一焦点了,要到按顺序的下一控件的GotFocus去解决,这样编程很复杂。
请教各位高师:LostFocus方法程序有没有控制下一焦点的功能?如果没有,还有没有更好的补救方法?
致以诚挚的感谢!
最后更新于:2009-11-10 16:54:00
回复列表 (共23个回复)
21 楼
jinlonggao [专家分:17130] 发布于 2009-11-12 17:01:00
老种子好,最近忙着装修房子,很少上网,看到老种子在这里探究问题,很是高兴。又见老朋友了。20个贴子我都粗略地看了一下,未及细想。看到你的问题,我第一个想到的和Ilikefox先生的一样用valid方法,后看到cbl518老先生用Keypress事件,我觉得更可行一些,因为valid方法也是在控件将要失去焦点时发生的,但是怎样让它失去焦点呢?还是要用鼠标点击其它控件,所以不如让用户在录入完相应内容后直接按回车键好。你可以在keypress事件中调用valid方法,这样可能会两全其美!
22 楼
北京惬意 [专家分:1330] 发布于 2009-11-12 17:24:00
高老师好:
首先祝贺你喜装新房!谢谢你的关注!
这个问题处理的好,能使软件提高灵活性,能使使用者感到软件更人性化。
我的软件里处理这种事件很多,用的办法很笨很笨的。
就是在当前控件中的LostFocus中经过分析处理,再将焦点去向的指令用变量记下,由下一按顺序得到焦点控件的GotFocus根据指令再将焦点转到要去的控件。我那段代码最后的“查客户表5用=.T.”就是那个指令,在按顺序得到焦点控件的GotFocus中又写上下面代码:
IF 查客户表5用
PZBDJ.PZBD.PZB.GRID1.COLUMN2.SETFOCUS
查客户表5用=.F.
ENDIF
实在是太笨太麻烦了吧?所以才提出来向各位请教,希望能找到捷径。
谢谢高老师!谢谢各位老师!
23 楼
北京惬意 [专家分:1330] 发布于 2009-11-12 17:56:00
回17楼赵老师:
这几天我在想,在我的20楼后半部分代码中也能看出,在LostFocus中焦点也不是都转不出去,也就是说有时能转出去,有时转不出去,但这个“有时”是何时就值得研究了。就事论事,这次是转到同一表单的其它控件上可以,转到另一表单上没行。是不是这样呢?有待于证实。
所以呀这是一个很伤脑筋的问题,寄希望于本论坛高人提出高论。
我来回复