文本框限制输入汉字(有代码),却对付不了汉字词组的输入?我在txet的 interactivechange事件 中写入:IF ASC(
文本框限制输入汉字(有代码),却对付不了汉字词组的输入?
我在txet的 interactivechange事件 中写入:
IF ASC(RIGHT(allt(this.Value),2)) >= 45200
messagebox('不能输入汉字!',0+16)
this.Value=''
return 0
ENDIF
IF ASC(LEFT(allt(this.Value),2)) >= 45200
messagebox('不能输入汉字!',0+16)
this.Value=''
return 0
ENDIF
可以限制单个汉字的输入,一旦使用输入法输入了词组就没办法对付了,比如我用输入法一次输入“精益求精”四个字后,整个text就没反应了,也不提示了(单个汉字输入会提示的),按下 退格键才出现提示。
有没有办法解决啊?
[解决办法]本帖最后由 dkfdtf 于 2013-05-02 20:20:15 编辑 判断逻辑都有问题,哪能只判断输入内容的首尾两个位置呢?
先输入 1122,然后将光标定位到 2 和 1 之间,不就可以任意输入汉字了吗?
至少应该这样:
If Len(Strconv(This.Value,5)) != 2*Len(This.Value)
Clear Typeahead
MessageBox('不能输入汉字!',0+16)
This.Value=''
EndIf
[解决办法]其实你可以限制文本框只能输入什么也可以,如:
限制一个文本框只能输入字母和数字
*--------------------------------
在文本框的 Init 事件加代码:
This.InputMask=Replicate("N",10) && 10 表示可输入的长度
或
在文本框的KeyPress事件中写代码:
Lparameters nKeyCode, nShiftAltCtrl
If !(Between(nKeyCode,48,57) ;&& 数字 0-9
Or Between(nKeyCode,97,122) ;&& 字母 a-z
Or Between(nKeyCode,65,90) ;&& 字母 A-Z
Or nKeyCode=7 ;&& DEL键
Or nKeyCode=127);&& BACKSPACE键
Or (nKeyCode=48 And nShiftAltCtrl=2)&& 防止按Ctrl+0
Nodefault
Endif
[解决办法]怎样让文本框里只能输入0~9几个数据?是在属性里设置吗?设置那个参数?
还是在别的地方处理,谢谢大家帮忙!
---------------------------
1、
在文本框的KeyPress事件中:
Lparameters nKeyCode, nShiftAltCtrl
If nKeyCode=48 And nShiftAltCtrl=2 &&防止按Ctrl+0来清除文本框格式
Nodefault
Endif
2、
然后
设置文本框的Value属性值,如:"0" &&能输入正整数和负整数。
或
设置文本框的Value属性值,如:"0.00" &&能输入正数和负数,可有小数位数,小数位数自定。
或
设置文本框的Inputmask属值,如:"99999" &&只能输入正整数,9的个数就是能输入的位数,下同。
或
设置文本框的Inputmask属值,如:"99999.99" &&只能输入正数,可有小数位数,小数位数自定。
或
设置文本框的Inputmask属值,如:"#99999.99" &&能输入正数和负数,可有小数位数,小数位数自定。