Author : Aries_Tranate(Bataan)
Date Submitted : 5/5/2005
Category : Forms
Compatibility : VB 6
This code has been accessed 9263 times.
Task : Scientific Calculator
Declarations
Code
Public no1 As Double, no2 As Double, WhichNo As Boolean, Dot As Boolean, op As String, answer As Double, DotVal As Long
Sub textvalue(num As Long)
On Error GoTo OvrFlowError
If (Not WhichNo) Then
If (Dot) Then
DotVal = DotVal + 1
temp = num
For i = 1 To DotVal
temp = (temp / 10)
Next
no1 = no1 + temp
Else
temp = no1 * 10
no1 = temp + num
End If
Text1.Text = no1
Else
If (Dot) Then
DotVal = DotVal + 1
temp = num
For i = 1 To DotVal
temp = (temp / 10)
Next
no2 = no2 + temp
Else
temp = no2 * 10
no2 = temp + num
End If
Text1.Text = no2
End If
txtNO1.Text = no1
txtNO2.Text = no2
txtOP.Text = op
txtANS.Text = answer
Exit Sub
OvrFlowError:
MsgBox "Overflow occured!" & Chr(13) & "Please restart your job.", vbExclamation, "Error - Ameya's Calculator"
End Sub
Sub calc()
On Error GoTo aritherror
Select Case op
Case "+"
answer = (no1 + no2)
Case "-"
answer = (no1 - no2)
Case "*"
answer = (no1 * no2)
Case "/"
answer = (no1 / no2)
Case "%"
'answer = (no1 % no2)
Case "&"
answer = (no1 & no2)
Case "|"
answer = (no1 & no2)
Case "~"
answer = (Not no1)
Case "sin"
answer = (Sin(no1))
Case "cos"
answer = (Cos(no1))
Case "tan"
answer = (Tan(no1))
Case "cosec"
answer = (1 / Sin(no1))
Case "sec"
answer = (1 / Cos(no1))
Case "cot"
answer = (1 / Tan(no1))
Case "ln"
answer = (Log(no1))
Case "log"
answer = (Log(no1) / 2.30258509299405)
Case "^"
answer = (no1 ^ no2)
Case "!"
answer = 1
For i = 2 To no1
answer = answer * i
Next
End Select
txtOP.Text = ""
WhichNo = False
Text1.Text = answer
txtNO1.Text = no1
txtNO2.Text = no2
txtOP.Text = op
txtANS.Text = answer
no1 = answer
Exit Sub
aritherror:
MsgBox "Arithmetic error occured!. Possibly Overflow." & Chr(13) & "Please restart your job.", vbExclamation, "Error - Ameya's Calculator"
End Sub
Private Sub error(errorno As Long)
Select Case errorno
Case 1
MsgBox "Divide by zero error!"
Case 2
MsgBox "Operator Overflow!"
End Select
End Sub
Private Sub about_Click()
frmAbout.Show
End Sub
Private Sub btn1_Click()
textvalue (1)
End Sub
Private Sub btn2_Click()
textvalue (2)
End Sub
Private Sub btn3_Click()
textvalue (3)
End Sub
Private Sub btn4_Click()
textvalue (4)
End Sub
Private Sub btn5_Click()
textvalue (5)
End Sub
Private Sub btn6_Click()
textvalue (6)
End Sub
Private Sub btn7_Click()
textvalue (7)
End Sub
Private Sub btn8_Click()
textvalue (8)
End Sub
Private Sub btn9_Click()
textvalue (9)
End Sub
Private Sub btn0_Click()
textvalue (0)
End Sub
Private Sub btnADD_Click()
op = "+"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
no2 = 0
End Sub
Private Sub btnSUB_Click()
op = "-"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
no2 = 0
End Sub
Private Sub btnMUL_Click()
op = "*"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
no2 = 0
End Sub
Private Sub btnDIV_Click()
op = "/"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
no2 = 0
End Sub
Private Sub btnAND_Click()
op = "&"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
End Sub
Private Sub btnOR_Click()
op = "|"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
End Sub
Private Sub btnMOD_Click()
op = "%"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
End Sub
Private Sub btnNOT_Click()
op = "~"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnSIN_Click()
op = ""
If (chkINV.Value = 1) Then
op = "a"
End If
op = op & "sin"
If (chkHYP.Value = 1) Then
op = op & "h"
End If
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnCOS_Click()
op = ""
If (chkINV.Value = 1) Then
op = "a"
End If
op = op & "cos"
If (chkHYP.Value = 1) Then
op = op & "h"
End If
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnTAN_Click()
op = ""
If (chkINV.Value = 1) Then
op = "a"
End If
op = op & "tan"
If (chkHYP.Value = 1) Then
op = op & "h"
End If
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnCOSEC_Click()
op = ""
If (chkINV.Value = 1) Then
op = "a"
End If
op = op & "cosec"
If (chkHYP.Value = 1) Then
op = op & "h"
End If
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnSEC_Click()
op = ""
If (chkINV.Value = 1) Then
op = "a"
End If
op = op & "sec"
If (chkHYP.Value = 1) Then
op = op & "h"
End If
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnCOT_Click()
op = ""
If (chkINV.Value = 1) Then
op = "a"
End If
op = op & "cot"
If (chkHYP.Value = 1) Then
op = op & "h"
End If
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnLN_Click()
If (no1 <= 0) Then
MsgBox ("logarithm is only defined for positive numbers." & Chr(13) & "Please enter a valid no and then take logarithm.")
Else
op = "ln"
Text1.Text = ""
DotVal = 0
Dot = False
calc
End If
End Sub
Private Sub btnLOG_Click()
If (no1 <= 0) Then
MsgBox ("logarithm is only defined for positive numbers." & Chr(13) & "Please enter a valid no and then take logarithm.")
Else
op = "log"
Text1.Text = ""
DotVal = 0
Dot = False
calc
End If
End Sub
Private Sub btnPOW_Click()
op = "^"
WhichNo = True
Text1.Text = ""
DotVal = 0
Dot = False
End Sub
Private Sub btnPOW2_Click()
op = "^"
no2 = 2
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnPOW3_Click()
op = "^"
no2 = 3
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnINV_Click()
op = "^"
no2 = -1
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnFACTORIAL_Click()
op = "!"
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnSQRT_Click()
If (no1 < 0) Then
MsgBox ("Square Root is not defined for negative numbers.")
Else
op = "^"
no2 = 0.5
Text1.Text = ""
DotVal = 0
Dot = False
calc
End If
End Sub
Private Sub btnEXP_Click()
op = "^"
no2 = no1
no1 = 2.30258509299405
Text1.Text = ""
DotVal = 0
Dot = False
calc
End Sub
Private Sub btnPI_Click()
If (Not WhichNo) Then
no1 = 3.14159265358979
Else
no2 = 3.14159265358979
End If
Text1.Text = "3.14159265358979"
DotVal = 0
Dot = False
End Sub
Private Sub btnC_Click()
no1 = 0
no2 = 0
answer = 0
Text1.Text = "0"
op = ""
DotVal = 0
Dot = False
WhichNo = False
txtNO1.Text = no1
txtNO2.Text = no2
txtOP.Text = op
txtANS.Text = answer
End Sub
Private Sub btnCE_Click()
If (temp) Then
no1 = 0
Else
no2 = 0
End If
Text1.Text = ""
DotVal = 0
Dot = False
End Sub
Private Sub btnbksp_Click()
If (Not WhichNo) Then
If (Len(Str(no1)) > 1) Then
no1 = FormatNumber(Left(Str(no1), Len(Text1.Text) - 1))
Text1.Text = no1
End If
Else
If (Len(Str(no2)) > 0) Then
no2 = FormatNumber(Left(Str(no2), Len(Text1.Text) - 1))
Text1.Text = no2
End If
End If
If (DotVal > 0) Then
DotVal = ditval - 1
End If
txtNO1.Text = no1
txtNO2.Text = no2
txtOP.Text = op
txtANS.Text = answer
End Sub
Private Sub btnDOT_Click()
If (Dot = False) Then
Dot = True
Text1.Text = Text1.Text & "."
DotVal = 0
End If
End Sub
Private Sub btnEqual_Click()
calc
no1 = answer
WhichNo = False
DotVal = 0
Dot = False
End Sub
Private Sub Command2_Click()
MsgBox ("Temp=" & Str(temp) & " No1=" & Str(no1) & " No2=" & Str(no2) & " op=" & op)
End Sub
Private Sub copy_Click()
Clipboard.SetText (Text1.Text)
End Sub
Private Sub cut_Click()
Clipboard.SetText (Text1.Text)
Text1.Text = ""
End Sub
Private Sub exit_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim no1, no2, op, WhichNo, Dot, temp
no1 = 0
no2 = 0
answer = 0
Dot = False
DotVal = 0
WhichNo = False
btnC_Click
End Sub
Private Sub helptopic_Click()
MsgBox ("No help found." & Chr(13) & "We are SORRY for the inconvenience!")
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If (IsNumeric(Text1.Text)) Then
If (Not WhichNo) Then
no1 = FormatNumber(Text1.Text)
Else
no2 = FormatNumber(Text1.Text)
End If
End If
txtNO1.Text = no1
txtNO2.Text = no2
txtOP.Text = op
txtANS.Text = answer
End Sub