'要试用本例请在窗体上加两个按钮数组和一个文本框 'cmdNumber用来显示数字,cmdOperation用来显示运算符号'这两个变量是用来标志前面一次是按了数字还是运算符'本例只是示意,其他细节请自行完善 Private blnFlagNumber As Boolean Private blnFlagOperation As BooleanPrivate Sub cmdNumber_Click(Index As Integer) blnFlagNumber = True blnFlagOperation = False
Text1.Text = Text1.Text & cmdNumber(Index).Caption End SubPrivate Sub cmdOperation_Click(Index As Integer) If blnFlagOperation Then '上次按了运算符号还没按数字就不处理 Else blnFlagOperation = True blnFlagNumber = False '我在这里只是演示,如果要做计算器的话,在这个位置应该根据用户所按的运算符进行运算后,再将结果显示在文本框里 Text1.Text = Text1.Text & cmdOperation(Index).Caption End If End Sub Private Sub Form_Load() blnFlagNumber = False blnFlagOperation = False
Text1.Text = "" End Sub
Dim Num1, Num2 As Double 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 Num2 = 0 StrNum1 = "" StrNum2 = "" FirstNum = True PointFlag = False Runsign = 0 SignFlag = False Label1.Caption = Trim("0.") 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 If (Num2 = 0) Then Err = MsgBox("除数不能为0", vbOKOnly, "错误") equal = Num1 Else equal = Num1 / Num2 End If End Select If equal > 0 And equal <= 1 Then StrNum2 = Trim("0") + Trim(Str(equal)) ElseIf equal < 0 And equal >= -1 Then equal = -equal StrNum2 = Trim("-0") + Trim(Str(equal)) Else StrNum2 = Str(equal) End If StrNum1 = StrNum2 Label1.Caption = StrNum2 End SubPrivate Sub blue_Click() Form1.BackColor = &HC00000 End SubPrivate Sub clear_Click() Call ClearData End SubPrivate Sub Command1_Click(Index As Integer) Select Case Index Case 0 To 9 If FirstNum Then StrNum1 = Trim(Str(Index)) FirstNum = False Else StrNum1 = Trim(StrNum1) + Trim(Str(Index)) If PointFlag Then End If End If Label1.Caption = StrNum1 Case 10 If Not PointFlag Then If FirstNum Then StrNum1 = Trim("0.") FirstNum = False Else StrNum1 = StrNum1 + "." End If Else Exit Sub End If PointFlag = True Label1.Caption = Trim(StrNum1) Case 12 To 15 FirstNum = True '使下次可以输入新数据 PointFlag = False '还原标记值 If SignFlag Then Call Run Else SignFlag = True StrNum2 = StrNum1 'StrNum1 = "" End If Runsign = Index - 11 Case 11 If Not SignFlag Then Label1.Caption = Trim(StrNum1) equal = Val(StrNum1) FirstNum = True PointFlag = False Else Call Run SignFlag = False FirstNum = True End If Case 16 Call ClearData Case 17 If Val(StrNum1) >= 1 Then StrNum1 = "-" + Trim(StrNum1) ElseIf Val(StrNum1) < 1 And Val(StrNum1) > 0 Then StrNum1 = "-0" + Trim(Str(Val(StrNum1))) ElseIf Val(StrNum1) < 0 And Val(StrNum1) > -1 Then StrNum1 = "0" + Trim(Str(-Val(StrNum1))) ElseIf Val(StrNum1) <= -1 Then StrNum1 = Str(-Val(StrNum1)) Else Exit Sub End If Label1.Caption = StrNum1 End Select End SubPrivate Sub dedfault_Click() Form1.BackColor = &H400000 End SubPrivate Sub exit_Click() ext = MsgBox("确实想退出吗?", vbExclamation + vbYesNo, "退出") If ext = vbYes Then End End If End SubPrivate Sub Form_Load() Num1 = 0 Num2 = 0 StrNum1 = "" StrNum2 = "" FirstNum = True PointFlag = False Runsign = 0 SignFlag = False End SubPrivate Sub green_Click() Form1.BackColor = &HC000& End SubPrivate Sub red_Click() Form1.BackColor = &HC0& End SubPrivate Sub this_Click() myexit = MsgBox("简易计算器", vbOKOnly, "关于") End Sub --------------------------------- 回去自己看看吧,祝你考试过关。
即然有了“计机器”我们为什么不用现成的呢? uses shellexecute,this is API function
'cmdNumber用来显示数字,cmdOperation用来显示运算符号'这两个变量是用来标志前面一次是按了数字还是运算符'本例只是示意,其他细节请自行完善
Private blnFlagNumber As Boolean
Private blnFlagOperation As BooleanPrivate Sub cmdNumber_Click(Index As Integer)
blnFlagNumber = True
blnFlagOperation = False
Text1.Text = Text1.Text & cmdNumber(Index).Caption
End SubPrivate Sub cmdOperation_Click(Index As Integer)
If blnFlagOperation Then
'上次按了运算符号还没按数字就不处理
Else
blnFlagOperation = True
blnFlagNumber = False
'我在这里只是演示,如果要做计算器的话,在这个位置应该根据用户所按的运算符进行运算后,再将结果显示在文本框里
Text1.Text = Text1.Text & cmdOperation(Index).Caption
End If
End Sub
Private Sub Form_Load()
blnFlagNumber = False
blnFlagOperation = False
Text1.Text = ""
End Sub
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
Num2 = 0
StrNum1 = ""
StrNum2 = ""
FirstNum = True
PointFlag = False
Runsign = 0
SignFlag = False
Label1.Caption = Trim("0.")
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
If (Num2 = 0) Then
Err = MsgBox("除数不能为0", vbOKOnly, "错误")
equal = Num1
Else
equal = Num1 / Num2
End If
End Select
If equal > 0 And equal <= 1 Then
StrNum2 = Trim("0") + Trim(Str(equal))
ElseIf equal < 0 And equal >= -1 Then
equal = -equal
StrNum2 = Trim("-0") + Trim(Str(equal))
Else
StrNum2 = Str(equal)
End If
StrNum1 = StrNum2
Label1.Caption = StrNum2
End SubPrivate Sub blue_Click()
Form1.BackColor = &HC00000
End SubPrivate Sub clear_Click()
Call ClearData
End SubPrivate Sub Command1_Click(Index As Integer)
Select Case Index
Case 0 To 9
If FirstNum Then
StrNum1 = Trim(Str(Index))
FirstNum = False Else
StrNum1 = Trim(StrNum1) + Trim(Str(Index))
If PointFlag Then
End If
End If
Label1.Caption = StrNum1
Case 10
If Not PointFlag Then
If FirstNum Then
StrNum1 = Trim("0.")
FirstNum = False
Else
StrNum1 = StrNum1 + "."
End If
Else
Exit Sub
End If
PointFlag = True
Label1.Caption = Trim(StrNum1)
Case 12 To 15
FirstNum = True '使下次可以输入新数据
PointFlag = False '还原标记值
If SignFlag Then
Call Run
Else
SignFlag = True
StrNum2 = StrNum1
'StrNum1 = ""
End If
Runsign = Index - 11
Case 11
If Not SignFlag Then
Label1.Caption = Trim(StrNum1)
equal = Val(StrNum1)
FirstNum = True
PointFlag = False
Else
Call Run
SignFlag = False
FirstNum = True
End If
Case 16
Call ClearData
Case 17
If Val(StrNum1) >= 1 Then
StrNum1 = "-" + Trim(StrNum1)
ElseIf Val(StrNum1) < 1 And Val(StrNum1) > 0 Then
StrNum1 = "-0" + Trim(Str(Val(StrNum1)))
ElseIf Val(StrNum1) < 0 And Val(StrNum1) > -1 Then
StrNum1 = "0" + Trim(Str(-Val(StrNum1)))
ElseIf Val(StrNum1) <= -1 Then
StrNum1 = Str(-Val(StrNum1))
Else
Exit Sub
End If
Label1.Caption = StrNum1
End Select
End SubPrivate Sub dedfault_Click()
Form1.BackColor = &H400000
End SubPrivate Sub exit_Click()
ext = MsgBox("确实想退出吗?", vbExclamation + vbYesNo, "退出")
If ext = vbYes Then
End
End If
End SubPrivate Sub Form_Load()
Num1 = 0
Num2 = 0
StrNum1 = ""
StrNum2 = ""
FirstNum = True
PointFlag = False
Runsign = 0
SignFlag = False
End SubPrivate Sub green_Click()
Form1.BackColor = &HC000&
End SubPrivate Sub red_Click()
Form1.BackColor = &HC0&
End SubPrivate Sub this_Click()
myexit = MsgBox("简易计算器", vbOKOnly, "关于")
End Sub
---------------------------------
回去自己看看吧,祝你考试过关。
uses shellexecute,this is API function
shell(这里填写计算器的文件全路径)
就ok了