首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

文本框限制输入汉字(有代码),却应付不了汉字词组的输入

2013-07-04 
文本框限制输入汉字(有代码),却对付不了汉字词组的输入?我在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"  &&能输入正数和负数,可有小数位数,小数位数自定。

热点排行