📄 frmcaculator.frm
字号:
End Select
End Sub
Private Sub cmdOperator_Click(Index As Integer)
Dim comdate As String
Select Case Index
Case 0 '加法
txtExplain.Locked = False
txtExplain.Text = " + 用于把两数相加,例如:A+B 。 请输入加数。"
txtExplain.Locked = True
If Not Check(txtResult.Text) Then Exit Sub
comdate = Left(lstView.list(lstView.ListCount - 1), 2)
If (lstView.ListCount = 0) Or (comdate = "结果") Or mFinish = True Then
If comdate = "结果" Or mFinish = True Then
lstView.AddItem Space(10)
lstView.AddItem Space(10)
If mFinish Then mFinish = False
End If
lstView.AddItem Space(22 - Len(txtResult.Text)) & txtResult.Text
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem "+"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "+" 'keep value
Result = Val(txtResult.Text)
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Exit Sub
End If
'kk$ = Trim(lstView.List(lstView.ListCount - 1))
kk$ = numGroup(lstView.ListCount - 1)
If kk$ = "÷" And txtResult.Text = 0 Then
txtExplain.Locked = False
txtExplain.Text = "除法错误,除数不能为零"
txtExplain.Locked = True
txtResult.Text = ""
Exit Sub
End If
'lstView.RemoveItem lstView.ListCount - 1
If kk$ = "×" Or kk = "÷" Then
lstView.list(lstView.ListCount - 1) = kk$ & Space(20 - Len(txtResult.Text)) & txtResult.Text
Else
lstView.list(lstView.ListCount - 1) = kk$ & Space(22 - Len(txtResult.Text) - Len(kk$)) & txtResult.Text
End If
Result = Predure(kk$, CStr(Result), txtResult.Text)
lstView.AddItem "----------------------------"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem Space(20 - Len(Display2(Result))) & Display2(Result)
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = Result
lstView.AddItem Space(25)
lstView.AddItem Space(25)
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
' ReDim Preserve numGroup(lstView.ListCount - 1)
' numGroup(lstView.ListCount - 1) = Result
lstView.AddItem "+"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "+"
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Case 1 '乘法
txtExplain.Locked = False '说明此操作
txtExplain.Text = " × 用于把两数相乘,例如:A×B。 请输入乘数。"
txtExplain.Locked = True
If Not Check(txtResult.Text) Then Exit Sub '检查数据有效性
comdate = Left(lstView.list(lstView.ListCount - 1), 2)
If lstView.ListCount = 0 Or comdate = "结果" Or mFinish = True Then '检查过程区别
If comdate = "结果" Or mFinish = True Then
lstView.AddItem Space(10) '计算开始
If mFinish Then mFinish = False
End If
lstView.AddItem Space(22 - Len(txtResult.Text)) & txtResult.Text
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem "×"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "×"
Result = Val(txtResult.Text)
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Exit Sub
End If
ll$ = Trim(lstView.list(lstView.ListCount - 1)) ' 计算过程中
If ll$ = "÷" And txtResult.Text = 0 Then
txtExplain.Locked = False
txtExplain.Text = "除法错误,除数不能为零"
txtExplain.Locked = True
txtResult.Text = ""
Exit Sub
End If
'lstView.RemoveItem lstView.ListCount - 1
If ll$ = "×" Or ll$ = "÷" Then
lstView.list(lstView.ListCount - 1) = ll$ & Space(20 - Len(txtResult.Text)) & txtResult.Text
Else
lstView.list(lstView.ListCount - 1) = ll$ & Space(22 - Len(txtResult.Text) - Len(ll$)) & txtResult.Text
End If
Result = Predure(ll$, CStr(Result), txtResult.Text)
lstView.AddItem "--------------------------"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = Result
lstView.AddItem Space(25)
lstView.AddItem Space(25)
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
' ReDim Preserve numGroup(lstView.ListCount - 1)
' numGroup(lstView.ListCount - 1) = Result
lstView.AddItem "×"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "×"
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Case 2 '减法
txtExplain.Locked = False
txtExplain.Text = " - 用于把两数相减,例如:A-B。 请输入减数。"
txtExplain.Locked = True
If Not Check(txtResult.Text) Then Exit Sub
comdate = Left(lstView.list(lstView.ListCount - 1), 2)
If lstView.ListCount = 0 Or comdate = "结果" Or mFinish = True Then '计算开始时
If comdate = "结果" Or mFinish = True Then
lstView.AddItem Space(10)
If mFinish Then mFinish = False
End If
lstView.AddItem Space(22 - Len(txtResult.Text)) & txtResult.Text
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult
lstView.AddItem "-"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "-"
Result = Val(txtResult.Text)
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Exit Sub
End If
jj$ = Trim(lstView.list(lstView.ListCount - 1)) '计算过程中
If jj$ = "÷" And txtResult.Text = 0 Then
txtExplain.Locked = False
txtExplain.Text = "除法错误,除数不能为零"
txtExplain.Locked = True
txtResult.Text = ""
Exit Sub
End If
'lstView.RemoveItem lstView.ListCount - 1
If jj$ = "×" Or jj$ = "÷" Then
lstView.list(lstView.ListCount - 1) = jj$ & Space(20 - Len(txtResult.Text)) & txtResult.Text
Else
lstView.list(lstView.ListCount - 1) = jj$ & Space(22 - Len(txtResult.Text) - Len(jj$)) & txtResult.Text
End If
Result = Predure(jj$, CStr(Result), txtResult.Text)
lstView.AddItem "------------------------"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = Result
lstView.AddItem Space(25)
lstView.AddItem Space(25)
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
' ReDim Preserve numGroup(lstView.ListCount - 1)
' numGroup(lstView.ListCount - 1) = Result
lstView.AddItem "-"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "-"
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Case 3 '初法
txtExplain.Locked = False
txtExplain.Text = " ÷ 用于把两数相除,例如:A÷B。 请输入除数。"
txtExplain.Locked = True
If Not Check(txtResult.Text) Then Exit Sub
comdate = Left(lstView.list(lstView.ListCount - 1), 2)
If lstView.ListCount = 0 Or comdate = "结果" Or mFinish = True Then
If comdate = "结果" Or mFinish = True Then
lstView.AddItem Space(10)
If mFinish Then mFinish = False
End If
lstView.AddItem Space(22 - Len(txtResult.Text)) & txtResult.Text
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem "÷"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "÷"
Result = Val(txtResult.Text)
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Exit Sub
End If
ff$ = Trim(lstView.list(lstView.ListCount - 1))
If ff$ = "÷" And txtResult.Text = 0 Then
txtExplain.Locked = False
txtExplain.Text = "除法错误,除数不能为零"
txtExplain.Locked = True
txtResult.Text = ""
Exit Sub
End If
'lstView.RemoveItem lstView.ListCount - 1
If ff$ = "×" Or ff$ = "÷" Then
lstView.list(lstView.ListCount - 1) = ff$ & Space(20 - Len(txtResult.Text)) & txtResult.Text
Else
lstView.list(lstView.ListCount - 1) = ff$ & Space(22 - Len(txtResult.Text) - Len(ff$)) & txtResult.Text
End If
Result = Predure(ff$, CStr(Result), txtResult.Text)
lstView.AddItem "-------------------------"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = Result
lstView.AddItem Space(25)
lstView.AddItem Space(25)
lstView.AddItem Space(22 - Len(Display2(Result))) & Display2(Result)
' ReDim Preserve numGroup(lstView.ListCount - 1)
' numGroup(lstView.ListCount - 1) = Result
lstView.AddItem "÷"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "÷"
txtResult.Text = ""
lstView.Selected(lstView.ListCount - 1) = True
Case 4 '等于
txtExplain.Locked = False
txtExplain.Text = " = 用于计算最后结果,例如:A+B=C,相当于功能键X,只是不退出计算器和返回结果 。 如果继续使用,请输入数据"
txtExplain.Locked = True
If Not Check(txtResult.Text) Then Exit Sub
comdate = Left(lstView.list(lstView.ListCount - 1), 2)
If lstView.ListCount = 0 Or comdate = "结果" Or mFinish = True Then
If comdate = "结果" Or mFinish = True Then
lstView.AddItem Space(10)
If mFinish Then mFinish = False
End If
lstView.AddItem "结果" & Space(20 - Len(txtResult.Text)) & txtResult.Text
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.Selected(lstView.ListCount - 1) = True
Result = Val(txtResult.Text)
Exit Sub
End If
dd$ = Trim(lstView.list(lstView.ListCount - 1))
If dd$ = "÷" And txtResult.Text = 0 Then
txtExplain.Locked = False
txtExplain.Text = "除法错误,除数不能为零"
txtExplain.Locked = True
txtResult.Text = ""
Exit Sub
End If
'lstView.RemoveItem lstView.ListCount - 1
If dd$ = "×" Or dd$ = "÷" Then
lstView.list(lstView.ListCount - 1) = dd$ & Space(20 - Len(txtResult.Text)) & txtResult.Text
Else
lstView.list(lstView.ListCount - 1) = dd$ & Space(22 - Len(txtResult.Text) - Len(dd$)) & txtResult.Text
End If
Result = Predure(dd$, CStr(Result), txtResult.Text)
lstView.AddItem "-------------------------"
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = txtResult.Text
lstView.AddItem "结果" & Space(20 - Len(Display2(Result))) & Display2(Result)
ReDim Preserve numGroup(lstView.ListCount - 1)
numGroup(lstView.ListCount - 1) = "="
lstView.Selected(lstView.ListCount - 1) = True
If Result < 1 And Result > -1 Then
txtResult.Text = Format(CStr(Result), "0.##########")
Else
txtResult.Text = CStr(Result)
End If
mFinish = False
'' Finaleresult = Result
Result = 0
End Select
End Sub
Private Sub cmdOperator_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
If Button <> 2 Then Exit Sub
Select Case Index
Case 0 '修改+
txtExplain.Locked = False
txtExplain.Text = " ← 用鼠标右键点取此按键,可以修改过程编辑区中被选中项的运算符为 +"
txtExplain.Locked = True
Modification 1, "+"
Case 1 '修改×
txtExplain.Locked = False
txtExplain.Text = " ← 用鼠标右键点取此按键,可以修改过程编辑区中被选中项的运算符为 ×"
txtExplain.Locked = True
Modification 1, "×"
Case 2 '修改-
txtExplain.Locked = False
txtExplain.Text = " ← 用鼠标右键点取此按键,可以修改过程编辑区中被选中项的运算符为 -"
txtExplain.Locked = True
Modification 1, "-"
Case 3 '修改÷
txtExplain.Locked = False
txtExplain.Text = " ← 用鼠标右键点取此按键,可以修改过程编辑区中被选中项的运算符为 ÷"
txtExplain.Locked = True
Modification 1, "÷"
'Case 4 '修改=
End Select
End Sub
Private Sub Form_Activate()
SetHelpID 80005
End Sub
'键盘处理
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim Shiftcode As Integer
Shiftcode = Shift And 7
Debug.Print KeyCode
Select Case KeyCode
' Case 107
' If txtResult.SelStart = 0 And Val(txtResult.Text) < 0 Then
' txtResult.Text = Abs(Val(txtResult.Text))
' Else
' cmdOperator_Click 0
' End If
' Case 109, 189
' If txtResult.SelStart = 0 Then
' cmdNumber_Click 11
' Else
' cmdOperator_Click 2
' End If
' Case vbKeyMultiply, 56
' If (Shift = 1 And KeyCode = 56) Or KeyCode = 106 Then
' cmdOperator_Click 1
' End If
' Case 111, 191 'vbKeyDivide
' cmdOperator_Click 3
' Case 187, 13
' If Shiftcode = 1 And KeyCode = 187 Then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -