当前位置: 代码迷 >> VFP >> 焦点的有关问题
  详细解决方案

焦点的有关问题

热度:891   发布时间:2013-02-26 00:00:00.0
焦点的问题
按tab键,当text控件获得焦点的时候,设置它的value=0.00或者触发一个valid事件进行有效性检验,用来控制输入,假设只能输入数字。请问如何实现?
*BINDEVENT() 函数。下面是一个简单示例。 
PUBLIC oform1 
oform1=NEWOBJECT("form1") 
oform1.SHOW 
RETURN 
DEFINE CLASS form1 AS FORM 
TOP = 24 
LEFT = 158 
DOCREATE = .T. 
CAPTION = "Bindevent 示例" 
NAME = "Form1" 
PROCEDURE _click 
THISFORM.text1.VALUE=THISFORM.ACTIVECONTROL.NAME &&此处可改为表单文件名 
thisform.Refresh 
ENDPROC  
PROCEDURE LOAD && 变量定义放在load事件中
PUBLIC t1,t2,t3
t1=""
t2=0.0
t3=DATE()
ENDPROC 
PROCEDURE INIT 
LOCAL i,j,cname 
THISFORM.LOCKSCREEN=.T. 
FOR i=1 TO 3 
FOR j=1 TO 3 
cname= 'cmd'+ALLTRIM(STR(i,1))+ALLTRIM(STR(j,1))
THISFORM.ADDOBJECT(cname, 'COMMANDBUTTON') && ADDOBJECT
WITH THISFORM.&cname. 
.LEFT=j*100-60 
.TOP=i*40 
.CAPTION= '按钮 &cname. ' 
.HEIGHT=25 
.WIDTH=80 
.VISIBLE=.T. 
ENDWITH 
BINDEVENT(THISFORM.&cname., 'click',THISFORM, '_CLICK') && 绑定_click事件
ENDFOR 
ENDFOR
THISFORM.ADDOBJECT( 'text1', 'textbox') && ADDOBJECT
WITH THISFORM.text1 
.LEFT=80 
.TOP=160 
.HEIGHT=25 
.WIDTH=200 
.VISIBLE=.T. 
ENDWITH 
THISFORM.LOCKSCREEN=.F. && 改变了表单所包含对象的属性时,表单成批应用所有改动
ENDPROC 
ENDDEFINE

------解决方案--------------------------------------------------------
怎样让文本框里只能输入0~9几个数据?是在属性里设置吗?设置那个参数?
还是在别的地方处理,谢谢大家帮忙!
---------------------------------------------------------------
1、 
在文本框的KeyPress事件中:
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=48 AND nShiftAltCtrl=2 &&防止按Ctrl+0
NODEFAULT
ENDIF

然后
设置文本框的Value属性值,如:"0" &&能输入正整数和负整数。

设置文本框的Value属性值,如:"0.00" &&能输入正数和负数,可有小数位数,小数位数自定。
 

2、
设置文本框的Inputmask属值,如:"99999" &&只能输入正整数。

设置文本框的Inputmask属值,如:"99999.99" &&只能输入正数,可有小数位数,小数位数自定。

设置文本框的Inputmask属值,如:"#99999.99" &&能输入正数和负数,可有小数位数,小数位数自定。
  相关解决方案