主题:请教如何跳转焦点到指定的对象
thirdli
[专家分:0] 发布于 2009-10-18 12:25:00
表单form1中有pageframe1,在page3最后的焦点对象是一个"txt房产证号",想在这个文本框输入完之后调转到form1中的command1,我用的keypress事件,代码:
aaa=ALLTRIM(this.Value)
acd=LEN(aaa)
IF nkeycode=13
IF NOT EMPTY(aaa)
IF acd>11 OR acd<9
Messagebox('产权证号码有误',16,'系统提示')
RETURN 0
ENDIF
ENDIF
ENDIF
但每次摁回车键,虽然提示出错,但却跳到了另一个对象上.请问怎样才能返回此文本框
最后更新于:2009-10-18 16:18:00
回复列表 (共13个回复)
沙发
qjbzjp [专家分:8830] 发布于 2009-10-18 16:25:00
代码没问题
板凳
thirdli [专家分:0] 发布于 2009-10-18 17:42:00
大概因为这个"txt房产证号",是这个page的最后一个对象,所以回车就会跳到另外的地方?
3 楼
qjbzjp [专家分:8830] 发布于 2009-10-18 20:07:00
应该不是。
调试一下,看看问题出在哪里。
4 楼
dfwxj [专家分:270] 发布于 2009-10-18 21:16:00
好象在文本框的事件中不能按要求跳转
5 楼
lbscyb [专家分:4780] 发布于 2009-10-19 00:31:00
文本框的lostfocus 事件:
aaa=ALLTRIM(this.Value)
acd=LEN(aaa)
IF NOT EMPTY(aaa) and (acd>11 OR acd<9) &&这句可以优化成 !=10
Messagebox('产权证号码有误',16,'系统提示')
RETURN 0
ENDIF
thisform.command1.setfocus
6 楼
thirdli [专家分:0] 发布于 2009-10-19 07:28:00
[quote]文本框的lostfocus 事件:
aaa=ALLTRIM(this.Value)
acd=LEN(aaa)
IF NOT EMPTY(aaa) and (acd>11 OR acd<9) &&这句可以优化成 !=10
Messagebox('产权证号码有误',16,'系统提示')
RETURN 0
ENDIF
thisform.command1.setfocus
[/quote]
谢谢您的帮助,但是不起作用,只要加上了判断长度的语句,就会跳转到别的对象,而且不能优化成!=10,因为9位、11位也是合法输入。
7 楼
jinlonggao [专家分:17130] 发布于 2009-10-19 10:08:00
aaa=ALLTRIM(this.Value)
acd=LEN(aaa)
IF nkeycode=13
IF NOT EMPTY(aaa)
IF acd>11 OR acd<9 &&(可以写成!inlist(acd,9,10,11),我看两种写法都可,没必要优化)
Messagebox('产权证号码有误',16,'系统提示')
this.setfocus &&试试看,行不行?
ENDIF
ENDIF
ENDIF
thisform.command1.setfocus
8 楼
sywzs [专家分:5650] 发布于 2009-10-19 10:37:00
在 pageframe1 的 page3 上再添加一个 TEXT 控件,设 TOP属性为 -50
这个 TEXT 控件的 GotFocus 事件代码如下
this.Parent.txt房产证号.SetFocus
txt房产证号的 keypress 事件代码如下
IF nKeyCode=13
IF LEN(ALLTRIM(this.Text))=10
thisform.command1.SetFocus
ELSE
Messagebox('产权证号码有误',16,'系统提示')
ENDIF
ENDIF
9 楼
thirdli [专家分:0] 发布于 2009-10-19 11:52:00
[quote]aaa=ALLTRIM(this.Value)
acd=LEN(aaa)
IF nkeycode=13
IF NOT EMPTY(aaa)
IF acd>11 OR acd<9 &&(可以写成!inlist(acd,9,10,11),我看两种写法都可,没必要优化)
Messagebox('产权证号码有误',16,'系统提示')
this.setfocus &&试试看,行不行?
ENDIF
ENDIF
ENDIF
thisform.command1.setfocus[/quote]
而且你这个语句,直接输入任何马上跳转^_^,这个也不行,只要有判断语句存在,就会调到另一个只读的文本框中.没有判断语句很正常.
10 楼
Vii [专家分:1130] 发布于 2009-10-19 12:16:00
假设一下,lz的command1按钮是保存按钮.
lz意图判断输入合法性.
那为什么一定要在文本框的keypress里做文章?难控制,且浪费系统资源.
直接在保存里判断是否更容易?
如果判断了不合法:
thisform.pageframe1.page3.SetFocus
thisform.pageframe1.page3.text1.SetFocus
直接返回,如果你愿意还可以把错误文本加个色.
以上纯属一厢情愿.如果有出入,再讨论.
我来回复