按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" &&能输入正数和负数,可有小数位数,小数位数自定。