我们知道小数点只能输入一次,一个数据中不能有多个小数点存在,所以需要一个布尔变量做判断。 在Form_Load里进行初赋值: PointFlag = False
在Command的单击事件里接着上面输入新的代码: Case 10
If Not PointFlag Then’如果没有小数点 If FirstNum Then’如果是第一个字符 StrNum1 = \FirstNum = False Else
StrNum1 = StrNum1 + \End If
Else’已有小数点 Exit Sub’则退出单击事件 End If
PointFlag = True
Text1.Text = StrNum1
第四章 按钮(二)
下面会复杂一些,我们先跳过等号,而来处理四则运算:先在General里声明新变量:
Dim Runsign As Integer '储存运算符号
Dim SignFlag As Boolean '判断是否已有运算符号 然后在Form_Load中进行初赋值: Runsign = 0
21
SignFlag = False
在接下的Command1_Click中继续输入代码: Case 12 To 15
FirstNum = True’使下一次可以输入新数据 PointFlag = False '还原标记值
If SignFlag Then’前面已有运算符未运算 Call Run Else
SignFlag = True
StrNum2 = StrNum1’把字符串1复制给字符串2 StrNum1 = \’字符串1清空 End If
Runsign = Index - 11 ‘储存键入的运算符
里面运算的部分我用了一个过程,是因为在按下等号时还会调用到运算过程,这样可以减少代码的输入,也使程序便于浏览。建立过程(Procedure),可以在General部分直接输入,也可以通过菜单里的“Add Procedure”添加。Run的代码如下: Sub Run()
Num1 = Val(StrNum2) Num2 = Val(StrNum1) Select Case Runsign Case 1’加
equal = Num1 + Num2 Case 2’减
equal = Num1 - Num2 Case 3’乘
22
equal = Num1 * Num2 Case 4’除
equal = Num1 / Num2 End Select
StrNum2 = Str(equal) StrNum1 = StrNum2 Text1.Text = StrNum2 End Sub
下面是其余的代码:(在Command1_Click事件里,接着写) Case 11
If Not SignFlag Then Text1.Text = StrNum1 equal = Val(StrNum1) FirstNum = True PointFlag = False Else
Call Run
SignFlag = False End If
Case Else’清除按钮 Call ClearData
里面又用到了一个ClearData过程,实际上就是Form_Load里的变量初赋值,代码如下: Sub ClearData() Num1 = 0 Num2 = 0 StrNum1 = \StrNum2 = \
23
FirstNum = True PointFlag = False Runsign = 0
SignFlag = False Text1.Text = \End Sub
这样完整的程序就完成了,本章介绍了VB的第一个控件――按钮,并且举例,希望你继续看下一章――菜单。 下面给出完整的程序代码: Dim Num1, Num2 As Single Dim StrNum1, StrNum2 As String
Dim FirstNum As Boolean '判断是否是数字开头 Dim PointFlag As Boolean '判断是否已有小数点 Dim Runsign As Integer '储存运算符号
Dim SignFlag As Boolean '判断是否已有运算符号
Sub ClearData() Num1 = 0
24
Num2 = 0 StrNum1 = \StrNum2 = \FirstNum = True PointFlag = False Runsign = 0 SignFlag = False Text1.Text = \End Sub Sub Run()
Num1 = Val(StrNum2) Num2 = Val(StrNum1) Select Case Runsign Case 1
equal = Num1 + Num2 Case 2
equal = Num1 - Num2 Case 3
equal = Num1 * Num2 Case 4
equal = Num1 / Num2 End Select
StrNum2 = Str(equal)
25