主题:请教如何跳转焦点到指定的对象
			
 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
直接返回,如果你愿意还可以把错误文本加个色.
以上纯属一厢情愿.如果有出入,再讨论.
							 
									
			
我来回复