VB实例代码-计算器
首先,需建立如下控件:
标签:Label1
命令按钮:
名称 Caption值
Cback ?
Cclear CE
Cstart C
Csin Sin
Ccos Cos
Csqrt Sqrt
Csign +/-
Cpoint Cpoint
Cequal =
控件数组:(命令按钮)
Calcu(1) +
Calcu(2) -
Calcu(3) *
Calcu(4) /
Cnum(0) 0
Cnum(1) 1
...
Cnum(9) 9
然后在代码窗口写源码:
Option Explicit
Dim Num1, Num2 As Double Dim PointIn As Boolean Dim Inputing As Boolean Dim Operation1 As Integer
Private Sub Calcu_Click(i As Integer)
If Inputing = False Then '在前次运算提交之后尚未输入新的数据
Operation1 = i '运算符重置
Num1 = Label1 '将显示栏里的数据赋值给第一个操作数
Exit Sub
End If
Inputing = False '将当前状态置为非输入数据阶段
If Num1 <> 0 Then '非首次计算
Num2 = Label1 '将显示栏里的数据赋值给第二个操作数
Calculate (Operation1) '计算前一次运算并显示结果
Else '首次计算
Num1 = Label1 '将显示栏里的数据赋值给第一个操作数
End If
Operation1 = i '提交运算符
End Sub
Private Sub Cback_Click()
Dim TheLen As Integer
TheLen = Len(Label1)
If TheLen > 2 Then
If Right(Label1, 1) = "." Then
Label1 = Left(Label1, TheLen - 2) & "."
Else
Label1 = Left(Label1, TheLen - 1)
End If
Else
Cclear_Click
End If
End Sub
Private Sub Cclear_Click()
Label1 = "0."
Num2 = 0
PointIn = False
End Sub
Private Sub Ccos_Click()
Calculate (6)
Inputing = False
End Sub
Private Sub Cequal_Click()
If Inputing Then '如果刚输入过数据'Or Operation1 > 0 Then
Num2 = Label1 '将显示栏里的数据赋值给第二个操作数
End If
Inputing = False '将当前状态置为非输入数据阶段
Calculate (Operation1) '计算提交的运算并显示结果
Num1 = 0
Operation1 = 0
End Sub
Private Sub Calculate(Oprt As Integer)
Select Case Oprt
Case 1
Num1 = Num1 + Num2
ShowResult (Num1)
Case 2
Num1 = Num1 - Num2
ShowResult (Num1)
Case 3
Num1 = Num1 * Num2
ShowResult (Num1)
Case 4
Num1 = Num1 / Num2
ShowResult (Num1)
Case 5
Num2 = Label1
Num1 = Sin(Num2)
ShowResult (Num1)
Case 6
Num2 = Label1
Num1 = Cos(Num2)
ShowResult (Num1)
Case 7
Num2 = Label1
Num1 = Sqr(Num2)
ShowResult (Num1)
End Select
End Sub
Private Sub ShowResult(Num As Double)
If Num = Fix(Num) Then '整数
Label1 = Num & "."
ElseIf Left(Num, 1) = "." Then '第一个字符为小数点
Label1 = "0" & Num
ElseIf Left(Num, 2) = "-." Then '前两个字符为"-."
Label1 = "-0." & Right(CStr(Num), Len(CStr(Num)) - 2)
Else
Label1 = Num
End If
End Sub
Private Sub Cnum_Click(Index As Integer)
NumInput (Index)
End Sub
Private Sub Cpoint_Click()
If Inputing = False Then
Label1 = "0."
Inputing = True
End If
PointIn = True
End Sub
Private Sub Csign_Click()
If Label1 <> "0." Then
Dim StrTemp As String
StrTemp = Label1
If Left(StrTemp, 1) = "-" Then
Label1 = Right(StrTemp, Len(StrTemp) - 1)
Else
Label1 = "-" & StrTemp
End If
End If
End Sub
Private Sub Csin_Click()
Calculate (5)
Inputing = False
End Sub
Private Sub Csqrt_Click()
Dim x As Long
x = Label1
If x >= 0 Then
Calculate (7)
Else
Label1 = "Error!"
End If
Inputing = False
End Sub
Private Sub Cstart_Click()
Label1 = "0."
Num1 = 0
Num2 = 0
PointIn = False
Inputing = True
Operation1 = 0
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Cequal.SetFocus
If KeyCode = 46 Then '按Del键
Cclear_Click
End If
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
'键入数字:
Case 48 To 57
NumInput (KeyAscii - 48)
Case 46 '小数点
Cpoint_Click
'键入运算符:
Case 43 '加号
Calcu_Click (1)
Case 45 '减号
Calcu_Click (2)
Case 42 '乘号
Calcu_Click (3)
Case 47 '除号
Calcu_Click (4)
Case 27 '重新开始(退出键)
Cstart_Click
Case 8 '退格
Cback_Click
Case 13 '等于(回车键)
Cequal_Click
End Select
End Sub
Private Sub Form_Load()
Me.Top = (Screen.Height - Me.Height) / 2
Me.Left = (Screen.Width - Me.Width) / 2
Me.KeyPreview = True
Cstart_Click
End Sub
Private Sub NumInput(n As Integer)
If Len(Label1) > 15 Then
Exit Sub
End If
If Inputing = False Then
Cclear_Click
Label1 = n & "."
Inputing = True
ElseIf Label1 <> "0." Then
If Right(Label1, 1) = "." Then
If PointIn = False Then
Dim TheLen As Integer
TheLen = Len(Label1)
Label1 = Left(Label1, TheLen - 1)
Label1 = Label1 & n & "."
Else
Label1 = Label1 & n
End If
Else
Label1 = Label1 & n
End If
Else
If PointIn Then
Label1 = Label1 & n
Else
Label1 = n & "."
End If
End If
End Sub
本文档为【VB实例代码-计算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。