Solved

# Simple calculator using functions (Visual Basic 6.0)

Posted on 2006-11-19
512 Views
Hello-
I am trying to write the code for a basic calculator in VB using functions but when I click on the numbers when i run it, they do not appear in the display text (txtResult.text).  Here is what I have.  Thanks!  Jackie

Dim oper As String
Dim myVar As Double
Dim myVar2 As Double

Option Explicit

'CALCULATOR TAB

Private Sub cmdEquals_Click()

Dim result As Double

myVar = txtResult.Text
txtResult.Text = ""

'CALL Calculator

result = Calculator(myVar, myVar2, oper)
txtResult.Text = result

If Val(txtResult.Text) < 0 Then
txtResult.ForeColor = vbRed
Else: txtResult.ForeColor = vbBlack
End If

If Val(txtResult.Text) >= 0 Then
txtResult.ForeColor = vbBlack
Else: txtResult.ForeColor = vbRed
End If

cmdRealDivide.BackColor = vbRed
cmdPlus.BackColor = vbRed
cmdSubtract.BackColor = vbRed
cmdMultiply.BackColor = vbRed
cmdIntegerDivision.BackColor = vbRed
cmdModulus.BackColor = vbRed
cmdExponent.BackColor = vbRed
cmdSquareRoot.BackColor = vbRed
cmdSquared.BackColor = vbRed
cmdNegPos.BackColor = vbRed

End Sub

Private Function Calculator(a As Double, b As Double, c As String) As Double

Dim result As Double 'function to calculate events

If c = "+" Then
result = a + b

ElseIf c = "/" Then
result = a / b
calc = result

ElseIf c = "-" Then
result = a - b
calc = result

ElseIf c = "*" Then
result = a * b
calc = result

ElseIf c = "\" Then
result = a \ b
calc = result

ElseIf c = "M" Then
result = a Mod b
calc = result

ElseIf c = "x^y" Then
result = a ^ b
End If

End Function
0
Question by:jlx2
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 3
• 2
• +1

LVL 16

Expert Comment

ID: 17976221
Hi jlx2,

I'm assuming that you have other buttons to populate the numbers? For example a button for the "1" that has:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.txtResult.AppendText("1")
End Sub

Cheers!
0

LVL 86

Expert Comment

ID: 17976227
"but when I click on the numbers when i run it, they do not appear in the display text (txtResult.text)"

I don't see any code there to handle the clicking of the "number" buttons...

Did you not post that part?

What are the names of the "number" buttons?  You need to add Click() handlers that add that buttons number to the display right?...
0

LVL 86

Expert Comment

ID: 17976229
By the way, you posted your question in the VB.Net area, not the VB6 area:
http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/

0

LVL 44

Expert Comment

ID: 17976291
Since this is the VB.Net section, that is why Hillwaaa's answer above may look a bit strange to you.

AW
0

LVL 44

Expert Comment

ID: 17976301
in this section:

ElseIf c = "/" Then
result = a / b
calc = result

What will you do it b = 0 ?

same goes for

ElseIf c = "\" Then
result = a \ b
calc = result

AW
0

LVL 16

Expert Comment

ID: 17976340
Yeah, I wondered why the code looked a bit strange to me :)

Still I think the point that Idle_mind and I made is valid - if the problem is that clicking the number buttons does not put the numbers into the textbox, then you need to add some code to handle the button clicks.

Good spot on the divide by zero too!
0

Author Comment

ID: 17976364
Thank-you for your responses.  Apparently I do not have anything set up for when I click on a number.  Each button is a command (i.e., cmdOne, cmdPlu, cmdEquals, etc).  This assignment was originally done the long way so I had a code under each separate command button.  Now we are in procedures/functions and I am not sure how to make the clicks appear in the display.

Thanks-
Jackie

P.S.  sorry i posted in VB.Net; I did not see the VB listed when I asked the quesiton.
0

LVL 86

Expert Comment

ID: 17976437
So the code for the "1" would probably look something like:

Private Sub cmdOne_Click()
txtResult.Text = txtResult.Text & "1"
End Sub
0

LVL 44

Accepted Solution

Arthur_Wood earned 50 total points
ID: 17976681
actually, you need three text boxes on your form:

txtVar1  The value on the LEFT SIDE of the operator
txtVar2  The value on the RIGHT SIDE of the Operator
txtResult  The value that is the ruesult of the calculation

LEFT_SIDE  operator RIGHT_SIDE = RESULT

The your number buttons would have code like this:

Private Sub cmdOne_CLick()
SetValue txtOper, 1
End Sub

Private Sub cmdTwo_CLick()
SetValue txtOper, 2
End Sub

and so on for 3 through 9, and 0

Private Sub cmdPlus_Click()
txtOper = "+"
End Sub

Private Sub cmdMinus_Click()
txtOper = "-"
End Sub

Private Sub cmdTimes_Click()
txtOper = "*"
End Sub

Private Sub cmdDivide_Click()
txtOper = "/"
End Sub

Private Sub cmdIntDivide_Click()
txtOper = "\"
End Sub

Private Sub cmdMod_Click()
txtOper = "M"
End Sub

Private Sub cmdPower_Click()
txtOper = "^"
End Sub

Private Sub SetValue(Operator as String, Value as String)
If Operator = "" then
TxtLeftSide = txtLedtSide & Value
Else
txtRightSide = txtRightSide & Value
End If
End Sub

then in cmdEquals (which will do the calculation):

Private Sub cmdEquals_Click()
Dim oper as String
Dim val1 as Integer
Dim val2 as Integer
Dim Result as Double

oper = txtOper.Text
txtOper.Text = ""
val1 = Val(txtLeftSide.Text)
val2 = val(txtRightSide.Text)

Result = Calculator(val1, val2, oper)  ' use your function from the original question

txtResult = Format(Result, "#.0000")

End Sub

AW

0

LVL 86

Expert Comment

ID: 17977024
"actually, you need three text boxes on your form"

You don't NEED three TextBoxes...a calculator only has ONE display right?  =)

When an operand is clicked you store the current value in the display in a variable for later use...
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

Introduction As chip makers focus on adding processor cores over increasing clock speed, developers need to utilize the features of modern CPUs.  One of the ways we can do this is by implementing parallel algorithms in our software.   One recentâ€¦
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial
Why Skyport?
###### Suggested Courses
Course of the Month5 days, 9 hours left to enroll