标题:求教使用模块限制text中只输入数字的模块
只看楼主
yxg_80
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-8-7
 问题点数:0 回复次数:9 
求教使用模块限制text中只输入数字的模块
想请教一个问题,Vb text中只输入数字+ -,使用模块控制的,我想要源代码!还有就是如果text中输入的数据是错误的,光标返回text后,text的内容被选中,模块的源代码是什么,由于text控件比较多,不可能每个控件都添加选中text内容的代码,请问有什么好的法子吗?
在一个控件中加入限制只输入数字的代码如下,控件多的话,一个一个的加,太笨了,也太麻烦了!所以要一个模块!
Select Case KeyAscii
        Case Asc("0") To Asc("9"), vbKeyBack '允许0~9数字和退格键
   
        Case Asc(".") '允许一个小数点
            If InStr(1, text.Text, ".") > 0 Then KeyAscii = 0
        Case Else
            KeyAscii = 0
        Beep '其他的发出Beep声音
    End Select

    Select Case KeyAscii
          Case Asc("-") '允许负数
                If Text1.SelStart = 0 Then
                  If Left(Text1.Text, 1) = "-" Then
                      KeyAscii = 0
                      Beep
                  End If
                Else
                  KeyAscii = 0
                  Beep
                End If
            Case 8
                  '无变化,退格键不屏蔽
            Case Asc(" ") '32
                If Text1.SelLength = 0 Then
                    KeyAscii = 0
                End If
            Case Asc(".") '46 '允许小数点
                If InStr(Text1.Text, ".") Then
                    KeyAscii = 0
                End If
            Case Is < Asc(0) '48
                  KeyAscii = 0
            Case Is > Asc(9) '57
                  KeyAscii = 0
      End Select

text内容判断错误,光标返回text后,text的内容被选中,控件多的话,一个一个的加,太笨了,也太麻烦了!所以要一个模块!
    text.SelStart = 0
    text.SelLength = Len(text.Text)
    text.Text = text.SelText

重复的代码就不要告诉我了,我要模块!

[[italic] 本帖最后由 yxg_80 于 2007-12-17 14:38 编辑 [/italic]]
搜索更多相关主题的帖子: 模块 数字 源代码 text text 
2007-12-17 14:30
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
不知道你说的模块控制是什么意思.
你写一个公用的过程不就是了?.
还有.既然光标要返回text后.那还要全选text?.那光标就不在text后了.

还有.如果多控件都一样的处理.那请用控件数组.

我的msn: myfend@
2007-12-17 14:37
yxg_80
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-8-7
得分:0 
哈哈,也许是我表达不清楚吧吧,我的意思是说在KeyPress时调用一个在bas里的函数,来判断输入的数据是否满足要求.在按回车键光标跳到下一个text时要判断上一个text的内容是否符合要求,如果不符合要求,上一个text的内容被全部选中,这样输入的时候直接输入就行了.我感觉这个选中过程对每个text来说都是一样的,那么是否写在一个bas里边更方便呢?
这个bas我以前用过,当时没有好好的记住,现在也忘了,只记着这些判断过程分别写在一个bas里边.
见笑,请高手不吝赐教!

[[italic] 本帖最后由 yxg_80 于 2007-12-17 14:46 编辑 [/italic]]
2007-12-17 14:43
yxg_80
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-8-7
得分:0 
原帖由 [bold][underline]purana[/underline][/bold] 于 2007-12-17 14:37 发表 [url=http://bbs.][/url]
不知道你说的模块控制是什么意思.
你写一个公用的过程不就是了?.
还有.既然光标要返回text后.那还要全选text?.那光标就不在text后了.

还有.如果多控件都一样的处理.那请用控件数组. ...


你说的公用过程也就是我想说的bas,哈哈,我想把你的过程放到一个bas里,以后要是再编写这样的程序直接用这个bas就行了.
我全选text的目的就是不要再删除text的内容,应为原text的内容是错的阿!我直接删除重写就行来了,要不还得删除太麻烦了,程序吗,就是做的越省劲越好嘛!
2007-12-17 14:56
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
那你不就在一个Module里写一个函数.接收KeyAscii参数.返回Boolean.然后再判断一下返回值就ok了..
你想怎么判断都行.

我的msn: myfend@
2007-12-17 14:57
yxg_80
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-8-7
得分:0 
你帮我整整阿?
2007-12-17 15:01
yxg_80
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-8-7
得分:0 
解决了但是不完美!
2007-12-17 15:42
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
'以下是我用的,限制文本框只能输入字母和数字的,你改一改就行了
'在KeyPress时 写一句 Call chkKeyCode(KeyAscii) 就OK
'以下代码放入Module里
Public Sub chkKeyCode(KeyAscii As Integer)
If KeyAscii = 8 Then Exit Sub
If KeyAscii > 64 And KeyAscii < 123 Then
   If KeyAscii > 96 And KeyAscii < 123 Then
      KeyAscii = KeyAscii - 32
         ElseIf KeyAscii > 90 And KeyAscii < 97 Then
            Beep
               KeyAscii = 0
            End If
         ElseIf KeyAscii > 47 And KeyAscii < 58 Then
Else
    Beep
    KeyAscii = 0
End If
End Sub
2007-12-17 21:26
yxg_80
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-8-7
得分:0 
谢谢楼上的!
2007-12-18 09:07
gdwz2008
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-9-21
得分:0 
又学习了   不错   知识永远学不完
2007-12-22 10:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-192946-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.119380 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved