Вы находитесь на странице: 1из 9

Option Explicit

Private mdblResult

As Double As Double

Private mdblSavedNumber Private mstrDot Private mstrOp Private mstrDisplay Private mblnDecEntered Private mblnOpPending Private mblnNewEquals

As String As String As String As Boolean As Boolean As Boolean

Private mblnEqualsPressed As Boolean Private mintCurrKeyIndex As Integer

Private Sub Form_Load()

Top = (Screen.Height - Height) / 2 Left = (Screen.Width - Width) / 2

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Dim intIndex As Integer

Select Case KeyCode Case vbKeyBack: Case vbKeyDelete: Case vbKeyEscape: intIndex = 0 intIndex = 1 intIndex = 2

Case vbKey0, vbKeyNumpad0: intIndex = 18 Case vbKey1, vbKeyNumpad1: intIndex = 13 Case vbKey2, vbKeyNumpad2: intIndex = 14 Case vbKey3, vbKeyNumpad3: intIndex = 15 Case vbKey4, vbKeyNumpad4: intIndex = 8 Case vbKey5, vbKeyNumpad5: intIndex = 9 Case vbKey6, vbKeyNumpad6: intIndex = 10 Case vbKey7, vbKeyNumpad7: intIndex = 3 Case vbKey8, vbKeyNumpad8: intIndex = 4 Case vbKey9, vbKeyNumpad9: intIndex = 5

Case vbKeyDecimal: Case vbKeyAdd: Case vbKeySubtract: Case vbKeyMultiply: Case vbKeyDivide: Case Else: End Select

intIndex = 20 intIndex = 21 intIndex = 16 intIndex = 11 intIndex = 6

Exit Sub

cmdCalc(intIndex).SetFocus cmdCalc_Click intIndex

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

Dim intIndex As Integer

Select Case Chr$(KeyAscii) Case "S", "s": intIndex = 7 Case "P", "p": intIndex = 12 Case "R", "r": intIndex = 17 Case "X", "x": intIndex = 11 Case "=": Case Else: intIndex = 22 Exit Sub

End Select

cmdCalc(intIndex).SetFocus cmdCalc_Click intIndex

End Sub

Private Sub cmdCalc_Click(Index As Integer)

Dim strPressedKey As String

mintCurrKeyIndex = Index

If mstrDisplay = "ERROR" Then mstrDisplay = "" End If

strPressedKey = cmdCalc(Index).Caption

Select Case strPressedKey Case "0", "1", "2", "3", "4", _ "5", "6", "7", "8", "9" If mblnOpPending Then mstrDisplay = "" mblnOpPending = False

End If If mblnEqualsPressed Then mstrDisplay = "" mblnEqualsPressed = False End If mstrDisplay = mstrDisplay & strPressedKey Case "." If mblnOpPending Then mstrDisplay = "" mblnOpPending = False End If If mblnEqualsPressed Then mstrDisplay = "" mblnEqualsPressed = False End If If InStr(mstrDisplay, ".") > 0 Then Beep Else mstrDisplay = mstrDisplay & strPressedKey End If Case "+", "-", "X", "/" mdblResult = Val(mstrDisplay) mstrOp = strPressedKey mblnOpPending = True mblnDecEntered = False

mblnNewEquals = True Case "%" mdblSavedNumber = (Val(mstrDisplay) / 100) * mdblResult mstrDisplay = Format$(mdblSavedNumber) Case "=" If mblnNewEquals Then mdblSavedNumber = Val(mstrDisplay) mblnNewEquals = False End If Select Case mstrOp Case "+" mdblResult = mdblResult + mdblSavedNumber Case "-" mdblResult = mdblResult - mdblSavedNumber Case "X" mdblResult = mdblResult * mdblSavedNumber Case "/" If mdblSavedNumber = 0 Then mstrDisplay = "ERROR" Else mdblResult = mdblResult / mdblSavedNumber End If Case Else mdblResult = Val(mstrDisplay) End Select

If mstrDisplay <> "ERROR" Then mstrDisplay = Format$(mdblResult) End If mblnEqualsPressed = True Case "+/-" If mstrDisplay <> "" Then If Left$(mstrDisplay, 1) = "-" Then mstrDisplay = Right$(mstrDisplay, 2) Else mstrDisplay = "-" & mstrDisplay End If End If Case "Backspace" If Val(mstrDisplay) <> 0 Then mstrDisplay = Left$(mstrDisplay, Len(mstrDisplay) - 1) mdblResult = Val(mstrDisplay) End If Case "CE" mstrDisplay = "" Case "C" mstrDisplay = "" mdblResult = 0 mdblSavedNumber = 0 Case "1/x" If Val(mstrDisplay) = 0 Then

mstrDisplay = "ERROR" Else mdblResult = Val(mstrDisplay) mdblResult = 1 / mdblResult mstrDisplay = Format$(mdblResult) End If Case "sqrt" If Val(mstrDisplay) < 0 Then mstrDisplay = "ERROR" Else mdblResult = Val(mstrDisplay) mdblResult = Sqr(mdblResult) mstrDisplay = Format$(mdblResult) End If End Select

If mstrDisplay = "" Then lblDisplay = "0." Else mstrDot = IIf(InStr(mstrDisplay, ".") > 0, "", ".") lblDisplay = mstrDisplay & mstrDot If Left$(lblDisplay, 1) = "0" Then lblDisplay = Mid$(lblDisplay, 2) End If End If

If lblDisplay = "." Then lblDisplay = "0."

End Sub

Вам также может понравиться