求VB计算器代码

[复制链接]
查看11 | 回复2 | 2007-2-12 17:24:08 | 显示全部楼层 |阅读模式
Option Explicit 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, saved value, and operator. Private Sub cmdClear_Click() cmdClearEntry_Click StoredValue = 0 Operator = opNone 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
回复

使用道具 举报

千问 | 2007-2-12 17:24:08 | 显示全部楼层
Reference Microsoft Script Control Dim SC1 As New ScriptControl SC1.Language = "VBSCRIPT"MsgBox SC1.Eval("1+2+3")
回复

使用道具 举报

千问 | 2007-2-12 17:24:08 | 显示全部楼层
支持一下楼上的看法。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行