blob: 93bcdcc60a9792d5e9896a91b03de83a0626cbfc [file] [log] [blame]
'**********************************************************
'* A simple four function calculator, written in VBScript *
'**********************************************************
' *** create a result window
Set result = createBean("java.awt.TextField", "0")
' *** create a panel of buttons
Set panel = createBean("java.awt.Panel")
panel.setLayout createBean("java.awt.GridLayout", 4, 4)
buttons = "789*456/123-C0.+"
For i = 1 To len(buttons)
label = mid(buttons,i,1)
Set button = createBean("java.awt.Button", label)
panel.add button
If InStr("*/-+", label) Then
button.onAction="op """ & label & """"
Elseif label="C" Then
button.onAction="mem=0 : nextOp=""+"" : result.text=""0"""
Else
button.onAction="press """ & label & """"
End If
Next
' *** Place everything in the frame
frame.title = "VBScript Calc"
frame.resize 130, 200
frame.add "North", result
frame.add "Center", panel
frame.validate
' *** Initialize the state of the calculator
mem = 0
nextOp = "+"
autoClear = True
' *** handle data entry keys
Sub press (key)
On Error Resume Next
If autoClear Then result.text="0"
If result.text="0" and key<>"." Then result.text = ""
If key="." and InStr(result.text,".") Then key=""
result.text = result.text & key
autoClear=False
End sub
' *** handle arithmetic keys
Sub op (key)
err=0
On Error Resume Next
num = result.text+0
If nextOp = "+" Then mem = mem + num
If nextOp = "-" Then mem = mem - num
If nextOp = "*" Then mem = mem * num
If nextOp = "/" Then mem = mem / num
nextOp = key
result.text = "" & mem
If err>0 then result.text="ERROR" : mem=0 : nextOp="+"
autoClear=True
End sub