'版權所有?(C)?1994?Microsoft?Corporation
'
'?您可以免費以任何方式使用、修改、復制並分發您認為有用的
'?示例應用程序文件?(或任何修改過的版本)。Microsoft?對任何
'?示例應用程序文件不做任何保證,不負任何責任和義務。
'?------------------------------------------------------------------------
Option?Explicit
Dim?Op1,?Op2'?預先輸入操作數。
Dim?DecimalFlag?As?Integer?'?小數點存在嗎?
Dim?NumOps?As?Integer'?操作數個數。
Dim?LastInput'?指示上壹次按鍵事件的類型。
Dim?OpFlag?'?指示未完成的操作。
Dim?TempReadout
'?C?(取消)?按鈕的?Click?事件過程
'?重新設置顯示並初始化變量。
Private?Sub?Cancel_Click()
Readout?=?Format(0,?"0.")
Op1?=?0
Op2?=?0
Form_Load
End?Sub
'?CE?(取消輸入)?按鈕的?Click?事件過程。
Private?Sub?CancelEntry_Click()
Readout?=?Format(0,?"0.")
DecimalFlag?=?False
LastInput?=?"CE"
End?Sub
'?小數點?(.)?按鈕的?Click?事件過程
'?如果上壹次按鍵為運算符,初始化?readout?為?"0.";
'?否則顯示時追加壹個小數點。
Private?Sub?Decimal_Click()
If?LastInput?=?"NEG"?Then
Readout?=?Format(0,?"-0.")
ElseIf?LastInput?<>?"NUMS"?Then
Readout?=?Format(0,?"0.")
End?If
DecimalFlag?=?True
LastInput?=?"NUMS"
End?Sub
'?窗體的初始化過程
'?設置所有變量為其初始值。
Private?Sub?Form_Load()
DecimalFlag?=?False
NumOps?=?0
LastInput?=?"NONE"
OpFlag?=?"?"
Readout?=?Format(0,?"0.")
'Decimal.Caption?=?Format(0,?".")
End?Sub
'?數字鍵?(0-9)?的?Click?事件過程
'?向顯示中的數追加新數。
Private?Sub?Number_Click(Index?As?Integer)
If?LastInput?<>?"NUMS"?Then
Readout?=?Format(0,?".")
DecimalFlag?=?False
End?If
If?DecimalFlag?Then
Readout?=?Readout?+?Number(Index).Caption
Else
Readout?=?Left(Readout,?InStr(Readout,?Format(0,?"."))?-?1)?+?Number(Index).Caption?+?Format(0,?".")
End?If
If?LastInput?=?"NEG"?Then?Readout?=?"-"?&?Readout
LastInput?=?"NUMS"
End?Sub
'?運算符?(+,?-,?x,?/,?=)?的?Click?事件過程
'?如果接下來的按鍵是數字鍵,增加?NumOps。
'?如果有壹個操作數,則設置?Op1。
'?如果有兩個操作數,則將?Op1?設置為?Op1?與
'?當前輸入字符串的運算結果,並顯示結果。
Private?Sub?Operator_Click(Index?As?Integer)
TempReadout?=?Readout
If?LastInput?=?"NUMS"?Then
NumOps?=?NumOps?+?1
End?If
Select?Case?NumOps
Case?0
If?Operator(Index).Caption?=?"-"?And?LastInput?<>?"NEG"?Then
Readout?=?"-"?&?Readout
LastInput?=?"NEG"
End?If
Case?1
Op1?=?Readout
If?Operator(Index).Caption?=?"-"?And?LastInput?<>?"NUMS"?And?OpFlag?<>?"="?Then
Readout?=?"-"
LastInput?=?"NEG"
End?If
Case?2
Op2?=?TempReadout
Select?Case?OpFlag
Case?"+"
Op1?=?CDbl(Op1)?+?CDbl(Op2)
Case?"-"
Op1?=?CDbl(Op1)?-?CDbl(Op2)
Case?"X"
Op1?=?CDbl(Op1)?*?CDbl(Op2)
Case?"/"
If?Op2?=?0?Then
MsgBox?"除數不能為零",?48,?"計算器"
Else
Op1?=?CDbl(Op1)?/?CDbl(Op2)
End?If
Case?"="
Op1?=?CDbl(Op2)
Case?"%"
Op1?=?CDbl(Op1)?*?CDbl(Op2)
End?Select
Readout?=?Op1
NumOps?=?1
End?Select
If?LastInput?<>?"NEG"?Then
LastInput?=?"OPS"
OpFlag?=?Operator(Index).Caption
End?If
End?Sub
'?百分比鍵?(%)?的?Click?事件過程
'?計算並顯示第壹個操作數的百分數。
Private?Sub?Percent_Click()
Readout?=?Readout?/?100
LastInput?=?"Ops"
OpFlag?=?"%"
NumOps?=?NumOps?+?1
DecimalFlag?=?True
End?Sub