当前位置:首页 > VB入门教程之一
End Select
End Sub
按下F5运行程序,你会看到这样的结果。是不是有种受骗的感觉,啊哟哟,可不是我的错,就是这么容易嘛! 从刚才的例子里,我们接触了一些VB中的输入方法,其实数据输入不仅仅局限于向Text框中输入数据,数据的输入还有许多其他的方法,譬如前面的Check1也是向程序发出一定的信息,只要是通过操作向计算机发布命令就可以叫做输入,下面我们来一一介绍。
首先要介绍的当然是输入用到最多的Text框。Text没有Click事件,它的缺省事件是Change,也就是当Text框里的一旦内容改变就会激发该事件发生,还是让我们用实例说话吧。
Text有几个特殊的属性,一是MultiLine(多行)属性,MultiLine属性为False的时候,不论文本有多长,它都会在一行里显示下去,换行符无效,当它为True的时候,字符串显示到Text框边缘的时候就会自动换行。另一个与之配合的属性是ScrollBars属性,它有4个值,0到3,分别是没有滚动条,水平滚动条,垂直滚动条,和二者都有,它是一个只读属性,也就是说只有在程序设计过程中才能改变,而不能在程序运行中改变,但是我们可以通过API解决运行中改变的问题,我们放在以后再讲。PasswordChart属性,我们经常在程序操作中遇到要填写密码的部分,为了保密起见,在屏幕上显示的字符一般“*”表示,并且这时是无法用剪贴板的,这在VB中非常容易做到,把PasswordChart中设一个用来代替字符串的字符即可,并不一定是“*”哦。
下面我们完成一个有趣的小程序,是我以前遇到过的一个程序,我对其进行了部分修改。程序的意思是这样的,假设你是一个司机应超速被警察扣留,现在需要你向警察陈述你的理由,如果你的话能打动他,就可以免交罚金,如果你在规定的字数里没有说出什么有震撼力的话,那老兄你可就惨了,交钱吧。J 这个程序比原来的英文程序有了几点不同,第一,由于用到的是双字节中文的中文,所以对于检测中文字符和英文有很大不同,第二,原来的英文程序不管你说多少,警察依然是依法从事,本例中给了犯规者10%的免罚机会(有点无聊??L ,不过也是为了学一些东东嘛)。下面就跟我来设计窗体吧。
Form1 Icon Stop图标 Caption 停车检查 BorderStyle 3 Label1 Caption 警官,我超速是有原因的,请听我说: BackColor &H00808080& ForeColor &H80000012& Label2 Caption 你必须在30字之内完成你理由的申诉,否则将受到罚款! BackColor &H00808080& ForeColor &H00FF0000& Text1 MultiLink True Text “” Picture1 Autosize True BackColor &H00808080& Visible True Picture2 Autosize True BackColor &H00808080& Visible False Picture3 Autosize True BackColor &H00808080& Visible False Command1 Visible False
三个图片框Picture1-3的Picture属性分别为绿灯,黄灯和红灯,这些图标在VB目录下的
Graphics\\Icons\\Traffic下(VB5),或是VB目录下的Icons\\Traffic下(VB4、VB3),你还可以为Label1在Font属性里选一个合适的字体和字重。下面我们来看代码: 首先初始化程序:
Private Sub Form_Load()
'把Command1放在水平的中央 Command1.Top = Label2.Top+200
Command1.Left = (Form1.Width - Command1.Width) / 2 '重叠三个图片框
Picture2.Left = Picture1.Left Picture2.Top = Picture1.Top Picture3.Left = Picture1.Left Picture3.Top = Picture1.Top
End Sub
下面我来讲一讲程序是怎样运行的,我们将用到Text的Change事件,每当字符串改变一次就对它进行一次检查,算出已经说的字数,当字数超过10时,下面的红绿灯会变成黄色,并且在这时随机抽取一个数,它在一个范围内出现的可能是10%,如果在这个范围内就可以免交罚金,如果不在范围则继续,当文字超过
20的时候,红绿灯会变成红色,再一次抽取随机数字,步骤同上,如果30个字已满,再进行一次检查,如果你真的那么不幸就该罚款了。
程序的步骤清楚了,我们在来看看程序的要点。由于中文是双字节字符,也就是说一个汉字占两个ASC码的位置,而VB显然是为英语国家设计的用Len函数无法返回汉字字节,也就是说一个汉字和和一个ASC字符在Len函数中得到的值是一样的,这就需要特殊处理。用Asc()函数,在括号内放入一个ASC字符或字符串,它会把第一个ASC码转化为0-255的数值,而把一个汉字放入,它的值必然不在0-255,这也就可以作为判定汉字的基础。我们可以把英文算作半个汉字。
第八章 输入(二)
下面我们来看看代码: 在General 里声明窗体级变量:
Dim Level As Integer
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Text1_Change()
Dim StrLength As Integer’字符串长度 Dim RandomNum As Single’随机数 Dim Str1 As String Dim a As String Dim i, Temp
StrLength = 0’每次开始时把字符串长度还原为0 a = Text1.Text
For i = 1 To Len(a)’Len(a)代表字符串的长度
Temp = Asc(Mid$(a, i, 1))’挨个取字符 If Temp > 255 Or Temp < 0 Then’不是ASC码
StrLength = StrLength + 2
Else
StrLength = StrLength + 1
End If
Next i
StrLength = StrLength / 2 Select Case StrLength
Case 0 To 9
Picture1.Visible = True Picture2.Visible = False Picture3.Visible = False
Label2.Caption = \慢慢说。你还有\StrLength) & \个字可以说\ Level = 1
Case 10 To 19
If Level = 1 Then
RandomNum = Rnd * 10’得到随机数
If RandomNum <= 10 And RandomNum > 9 Then Text1.Enabled = False
Label2.Caption = \很抱歉这是个误会??\
Command1.Visible = True Command1.Caption = \您可以离开了\
End If Level = 2 Else
Picture1.Visible = False Picture2.Visible = True Picture3.Visible = False Str1 = \怎么还没说完!\
共分享92篇相关文档