Private Sub Command1_Click(Index As Integer) Static F As Integer Static v1 As Single Static v2 As Single Select Case Index Case 0 To 10 Text1 = Text1 & Command1(Index).Caption Case 11 To 14 v1 = Val(Text1) F = Index Text1 = "" Case 15 v2 = Val(Text1) If F = 11 Then Text1.Text = v1 & "+" & v2 & "=" & v1 + v2If F = 12 Then Text1 = v1 & "-" & v2 & "=" & v1 - v2 If F = 13 Then Text1 = v1 & "*" & v2 & "=" & v1 * v2 If F = 14 Then Text1 = v1 & "/" & v2 & "=" & v1 / v2End SelectEnd SubPrivate Sub Form_Load() Dim I As Integer For I = 0 To Command1.UBound Select Case I Case 0 To 9 Command1(I).Caption = I Case 10 Command1(I).Caption = "." Case 11 Command1(I).Caption = "+" Case 12 Command1(I).Caption = "-" Case 13 Command1(I).Caption = "*" Case 14 Command1(I).Caption = "/" Case 15 Command1(I).Caption = "=" End Select Next Text1.Alignment = vbRightJustify Text1 = "" End Sub
' Remove the last character. Private Sub DeleteCharacter() Dim txt As String Dim min_len As Integer txt = txtDisplay.Text If Left$(txt, 1) = "-" Then min_len = 2 Else min_len = 1 End If
If Len(txt) > min_len Then txtDisplay.Text = Left$(txt, Len(txt) - 1) Else txtDisplay.Text = "0" End If End Sub
' Clear the current entry. Private Sub cmdClearEntry_Click() txtDisplay.Text = "" End Sub ' Add a decimal point to the display. Private Sub cmdDecimal_Click() If InStr(txtDisplay.Text, ".") Then Beep Else If NewEntry Then txtDisplay.Text = "." NewEntry = False Else txtDisplay.Text = txtDisplay.Text & "." End If End If End Sub
' Calculate the result of the previous operation. Private Sub cmdEquals_Click() Dim new_value As Double If txtDisplay.Text = "" Then new_value = 0 Else new_value = CDbl(txtDisplay.Text) End If Select Case Operator Case opNone StoredValue = new_value Case opAdd StoredValue = StoredValue + new_value Case opSubtract StoredValue = StoredValue - new_value Case opMultiply StoredValue = StoredValue * new_value Case opDivide StoredValue = StoredValue / new_value End Select Operator = opNone NewEntry = True txtDisplay.Text = Format$(StoredValue) End Sub
' Add a number to the display. Private Sub cmdNumber_Click(Index As Integer) If NewEntry Then txtDisplay.Text = Format$(Index) NewEntry = False Else txtDisplay.Text = _ txtDisplay.Text & Format$(Index) End If End Sub
' Prepare to perform an operation. Private Sub cmdOperator_Click(Index As Integer) ' Perform the previous operation. cmdEquals_Click ' Remember this operation. Operator = Index ' Start a new value. NewEntry = True End Sub ' Change the value's sign. Private Sub cmdPlusMinus_Click() If NewEntry Then txtDisplay.Text = "-" ElseIf Left$(txtDisplay.Text, 1) = "-" Then txtDisplay.Text = Right$(txtDisplay.Text, 2) Else txtDisplay.Text = "-" & txtDisplay.Text End If End Sub
' Check for normal characters. Private Sub Form_KeyPress(KeyAscii As Integer) txtDisplay_KeyPress KeyAscii End Sub ' Check for unusual characters. Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) txtDisplay_KeyUp KeyCode, Shift End Sub' Keep the cursor on the right. Private Sub txtDisplay_Change() txtDisplay.SelStart = Len(txtDisplay.Text) End Sub
' Keep the cursor on the right. Private Sub txtDisplay_GotFocus() txtDisplay_Change End Sub' Check for normal characters. Private Sub txtDisplay_KeyPress(KeyAscii As Integer) Dim ch As String ch = Chr$(KeyAscii) Select Case ch Case "0" cmdNumber_Click 0 Case "1" cmdNumber_Click 1 Case "2" cmdNumber_Click 2 Case "3" cmdNumber_Click 3 Case "4" cmdNumber_Click 4 Case "5" cmdNumber_Click 5 Case "6" cmdNumber_Click 6 Case "7" cmdNumber_Click 7 Case "8" cmdNumber_Click 8 Case "9" cmdNumber_Click 9 Case "*", "x", "X" cmdOperator_Click opMultiply Case "+" cmdOperator_Click opAdd Case vbCrLf, vbCr, "=" cmdEquals_Click Case "-" cmdOperator_Click opSubtract Case "." cmdDecimal_Click Case "/" cmdOperator_Click opDivide Case "C", "c" cmdClearEntry_Click End Select KeyAscii = 0 End Sub
' Check for unusual characters. Private Sub txtDisplay_KeyUp(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyNumpad0 cmdNumber_Click 0 Case vbKeyNumpad1 cmdNumber_Click 1 Case vbKeyNumpad2 cmdNumber_Click 2 Case vbKeyNumpad3 cmdNumber_Click 3 Case vbKeyNumpad4 cmdNumber_Click 4 Case vbKeyNumpad5 cmdNumber_Click 5 Case vbKeyNumpad6 cmdNumber_Click 6 Case vbKeyNumpad7 cmdNumber_Click 7 Case vbKeyNumpad8 cmdNumber_Click 8 Case vbKeyNumpad9 cmdNumber_Click 9 Case vbKeyMultiply cmdOperator_Click opMultiply Case vbKeyAdd cmdOperator_Click opAdd Case vbKeySeparator cmdEquals_Click Case vbKeySubtract cmdOperator_Click opSubtract Case vbKeyDecimal cmdDecimal_Click Case vbKeyDivide cmdOperator_Click opDivide Case vbKeyBack, vbKeyDelete DeleteCharacter End Select KeyCode = 0 End Sub
Static F As Integer
Static v1 As Single
Static v2 As Single
Select Case Index
Case 0 To 10
Text1 = Text1 & Command1(Index).Caption
Case 11 To 14
v1 = Val(Text1)
F = Index
Text1 = ""
Case 15
v2 = Val(Text1)
If F = 11 Then Text1.Text = v1 & "+" & v2 & "=" & v1 + v2If F = 12 Then Text1 = v1 & "-" & v2 & "=" & v1 - v2
If F = 13 Then Text1 = v1 & "*" & v2 & "=" & v1 * v2
If F = 14 Then Text1 = v1 & "/" & v2 & "=" & v1 / v2End SelectEnd SubPrivate Sub Form_Load()
Dim I As Integer
For I = 0 To Command1.UBound
Select Case I
Case 0 To 9
Command1(I).Caption = I
Case 10
Command1(I).Caption = "."
Case 11
Command1(I).Caption = "+"
Case 12
Command1(I).Caption = "-"
Case 13
Command1(I).Caption = "*"
Case 14
Command1(I).Caption = "/"
Case 15
Command1(I).Caption = "="
End Select
Next
Text1.Alignment = vbRightJustify
Text1 = ""
End Sub
Private StoredValue As Double
Private Const opNone = 0
Private Const opAdd = 1
Private Const opSubtract = 2
Private Const opMultiply = 3
Private Const opDivide = 4
Private Operator As Integer
Private NewEntry As Boolean
' Remove the last character.
Private Sub DeleteCharacter()
Dim txt As String
Dim min_len As Integer
txt = txtDisplay.Text
If Left$(txt, 1) = "-" Then
min_len = 2
Else
min_len = 1
End If
If Len(txt) > min_len Then
txtDisplay.Text = Left$(txt, Len(txt) - 1)
Else
txtDisplay.Text = "0"
End If
End Sub
' Clear the current entry.
Private Sub cmdClearEntry_Click()
txtDisplay.Text = ""
End Sub
' Add a decimal point to the display.
Private Sub cmdDecimal_Click()
If InStr(txtDisplay.Text, ".") Then
Beep
Else
If NewEntry Then
txtDisplay.Text = "."
NewEntry = False
Else
txtDisplay.Text = txtDisplay.Text & "."
End If
End If
End Sub
' Calculate the result of the previous operation.
Private Sub cmdEquals_Click()
Dim new_value As Double
If txtDisplay.Text = "" Then
new_value = 0
Else
new_value = CDbl(txtDisplay.Text)
End If
Select Case Operator
Case opNone
StoredValue = new_value
Case opAdd
StoredValue = StoredValue + new_value
Case opSubtract
StoredValue = StoredValue - new_value
Case opMultiply
StoredValue = StoredValue * new_value
Case opDivide
StoredValue = StoredValue / new_value
End Select
Operator = opNone
NewEntry = True
txtDisplay.Text = Format$(StoredValue)
End Sub
' Add a number to the display.
Private Sub cmdNumber_Click(Index As Integer)
If NewEntry Then
txtDisplay.Text = Format$(Index)
NewEntry = False
Else
txtDisplay.Text = _
txtDisplay.Text & Format$(Index)
End If
End Sub
' Prepare to perform an operation.
Private Sub cmdOperator_Click(Index As Integer)
' Perform the previous operation.
cmdEquals_Click
' Remember this operation.
Operator = Index
' Start a new value.
NewEntry = True
End Sub
' Change the value's sign.
Private Sub cmdPlusMinus_Click()
If NewEntry Then
txtDisplay.Text = "-"
ElseIf Left$(txtDisplay.Text, 1) = "-" Then
txtDisplay.Text = Right$(txtDisplay.Text, 2)
Else
txtDisplay.Text = "-" & txtDisplay.Text
End If
End Sub
' Check for normal characters.
Private Sub Form_KeyPress(KeyAscii As Integer)
txtDisplay_KeyPress KeyAscii
End Sub
' Check for unusual characters.
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
txtDisplay_KeyUp KeyCode, Shift
End Sub' Keep the cursor on the right.
Private Sub txtDisplay_Change()
txtDisplay.SelStart = Len(txtDisplay.Text)
End Sub
' Keep the cursor on the right.
Private Sub txtDisplay_GotFocus()
txtDisplay_Change
End Sub' Check for normal characters.
Private Sub txtDisplay_KeyPress(KeyAscii As Integer)
Dim ch As String
ch = Chr$(KeyAscii)
Select Case ch
Case "0"
cmdNumber_Click 0
Case "1"
cmdNumber_Click 1
Case "2"
cmdNumber_Click 2
Case "3"
cmdNumber_Click 3
Case "4"
cmdNumber_Click 4
Case "5"
cmdNumber_Click 5
Case "6"
cmdNumber_Click 6
Case "7"
cmdNumber_Click 7
Case "8"
cmdNumber_Click 8
Case "9"
cmdNumber_Click 9
Case "*", "x", "X"
cmdOperator_Click opMultiply
Case "+"
cmdOperator_Click opAdd
Case vbCrLf, vbCr, "="
cmdEquals_Click
Case "-"
cmdOperator_Click opSubtract
Case "."
cmdDecimal_Click
Case "/"
cmdOperator_Click opDivide
Case "C", "c"
cmdClearEntry_Click
End Select
KeyAscii = 0
End Sub
' Check for unusual characters.
Private Sub txtDisplay_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyNumpad0
cmdNumber_Click 0
Case vbKeyNumpad1
cmdNumber_Click 1
Case vbKeyNumpad2
cmdNumber_Click 2
Case vbKeyNumpad3
cmdNumber_Click 3
Case vbKeyNumpad4
cmdNumber_Click 4
Case vbKeyNumpad5
cmdNumber_Click 5
Case vbKeyNumpad6
cmdNumber_Click 6
Case vbKeyNumpad7
cmdNumber_Click 7
Case vbKeyNumpad8
cmdNumber_Click 8
Case vbKeyNumpad9
cmdNumber_Click 9
Case vbKeyMultiply
cmdOperator_Click opMultiply
Case vbKeyAdd
cmdOperator_Click opAdd
Case vbKeySeparator
cmdEquals_Click
Case vbKeySubtract
cmdOperator_Click opSubtract
Case vbKeyDecimal
cmdDecimal_Click
Case vbKeyDivide
cmdOperator_Click opDivide
Case vbKeyBack, vbKeyDelete
DeleteCharacter
End Select
KeyCode = 0
End Sub