Welcome to Dream.In.Code
Getting Help is Easy!

Join 119,729 Programmers for FREE! Ask your question and get quick answers from experts. There are 1,356 online right now! We've got more than 500 tutorials and 2,000 snippets. Join and find out why Dream.In.Code is the #1 programming help community on the internet! Registration is fast and FREE... Join Now!



Create a calculator

 
Reply to this topicStart new topic

> Create a calculator

sam_benne
Group Icon



post 30 Apr, 2008 - 08:50 AM
Post #1


Here I will shoe you how to create a simple calculator that can add, subtract, divide, multiply and change sign state. Most of the code is commented so it is easy to learn.

For this you will need 19 buttons and one text box (txtNUMBER). Have a look at the picture that is at the bottom on how I have made mine.

first we will declare the variables:
CODE

'Declare the global variables to be used throughout the form
Dim mfirst As Single
Dim msecond As Single
Dim manswer As Single
' Declare the global variables for the operators: Add,Sub,Mul and DIV
Dim mbutton As Integer
'Change the sign of the number from + or - or vice versa
' Depending on its state now they show in txtNUMBER text box
Dim Signstate As Boolean


Second we will make it so that the number buttons actually do something so add the code into the your form:
CODE

Private Sub cmd0_Click()
'Put the value 0 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "0"
End Sub

Private Sub cmd1_Click()
'Put the value 1 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "1"
End Sub

Private Sub cmd2_Click()
'Put the value 2 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "2"
End Sub

Private Sub cmd3_Click()
'Put the value 3 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "3"
End Sub

Private Sub cmd4_Click()
'Put the value 4 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "4"
End Sub

Private Sub cmd5_Click()
'Put the value 5 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "5"
End Sub

Private Sub cmd6_Click()
'Put the value 6 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "6"
End Sub

Private Sub cmd7_Click()
'Put the value 7 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "7"
End Sub

Private Sub cmd8_Click()
'Put the value 8 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "8"
End Sub

Private Sub cmd9_Click()
'Put the value 9 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "9"
End Sub


Noticing that all the number buttons are called cmd# (# is the number) as your buttons need to have these names.

Now we will make the math buttons. The first is the add button:

CODE

Private Sub cmdADD_Click()
'User slected the add button
mbutton = 1
'Convert into a number and transfer the value from
'The text box on the form into the first number
mfirst = Val(txtNUMBER)

txtNUMBER = ""
End Sub


Subtract:
CODE

Private Sub cmdSUBTRACT_Click()
'User slected the minus button
mbutton = 2
'Convert into a number and transfer the value from
'The text box on the form into the first number
mfirst = Val(txtNUMBER)

txtNUMBER = ""
End Sub


Multiply:
CODE

Private Sub cmdMULTIPLY_Click()
'User slected the multiply button
mbutton = 3
'Convert into a number and transfer the value from
'The text box on the form into the first number
mfirst = Val(txtNUMBER)

txtNUMBER = ""
End Sub


Divide:
CODE

Private Sub cmdDIVIDE_Click()
'User slected the Divide button
mbutton = 4
'Convert into a number and transfer the value from
'The text box on the form into the first number
mfirst = Val(txtNUMBER)

txtNUMBER = ""
End Sub


Now we will make the equals button work otherwise theres no point to all this.
CODE

Private Sub cmdEQUALS_Click()
msecond = Val(txtNUMBER)

Select Case mbutton
Case Is = 1
manswer = mfirst + msecond
Case Is = 2
manswer = mfirst - msecond
Case Is = 3
manswer = mfirst * msecond
Case Is = 4
manswer = mfirst / msecond
End Select
txtNUMBER = manswer
End Sub


Now you can test your calculator to see it work. Once you have test we have just a few more bits to add such as the decimal point:
CODE

Private Sub cmdDOT_Click()
txtNUMBER = txtNUMBER + "."
End Sub


The next bit of code is to change the sign state:
CODE

Private Sub cmdSIGN_Click()
'Sign state = false on load of form
If txtNUMBER = "-" + txtNUMBER Then
    MsgBox "error start again"
End If
If Signstate = False Then
txtNUMBER = "-" + txtNUMBER
Signstate = True
Else
'SignState = True

minusvalue = Val(txtNUMBER)
'Value now positive
minusvalue = Val("-1" * minusvalue)
txtNUMBER = minusvalue
Signstate = False

End If
End Sub


The next two bits are to cancel meaning empty the textbox and to end the program.
CODE

Private Sub cmdEXIT_Click()
Unload frmCALCULATOR
End Sub

Private Sub cmdCANCEL_Click()
'Remove the values in the txtNUMBER text box
txtNUMBER = " "
End Sub


Now your calculator is complete all you have to do is test it. Since this has a lot of code I have added a text file with the code in it. If you do have any problems then just comment me and I will do what I can to help.



Attached File(s)
Attached File  code.txt ( 3.27k ) Number of downloads: 290
Go to the top of the page
+Quote Post


Register to Make This Ad Go Away!

Amadeus
Group Icon



post 7 May, 2008 - 10:37 AM
Post #2
I would suggest it may be prudent to implement some error checking on your divide case - division by zero is never desirable.
Go to the top of the page
+Quote Post

sam_benne
Group Icon



post 7 May, 2008 - 11:24 AM
Post #3
Will update it now so that it does an error check on it.
Go to the top of the page
+Quote Post

sam_benne
Group Icon



post 7 May, 2008 - 11:42 AM
Post #4
Put this:
CODE

    If Val(mfirst) > 0 And Val(msecond) > 0 Then
        manswer = Val(mfirst) / Val(msecond)
        
    ElseIf Val(Text1.Text) = 0 And Val(msecond) > 0 Then
        manswer = Val(mfirst) / Val(msecond)
        
    ElseIf Val(Text1.Text) > 0 And Val(msecond) = 0 Then
        manswer = Val(mfirst) / Val(msecond)
        
    ElseIf Val(Text1.Text) = 0 And Val(msecond) = 0 Then
        manswer = Val(mfirst) / Val(msecond + 1)
        
    End If


After:

CODE

Select Case mbutton
Case Is = 1
manswer = mfirst + msecond
Case Is = 2
manswer = mfirst - msecond
Case Is = 3
manswer = mfirst * msecond
Case Is = 4
manswer = mfirst / msecond
End Select


As this is an error check for if your dividing 0 by 0.
Go to the top of the page
+Quote Post

tthompson1114
*



post 22 Jun, 2008 - 06:32 PM
Post #5
When I am writing the code for each button to add the number i press to the text box it gives me an error that says "Operator '+' is not defined for types 'System.Windows.Forms.TextBox' and 'String'. I'm pretty new to Visual Basic 2008 and I have no clue what to do. Any suggestions to this problem?
Go to the top of the page
+Quote Post

sam_benne
Group Icon



post 22 Jun, 2008 - 07:29 PM
Post #6
This is Visual Basic 6 not 2008 sorry
Go to the top of the page
+Quote Post

kEsiah
*



post 26 Jun, 2008 - 01:26 AM
Post #7
hmm hi der! can i ask u a question? this codes is for standard calculator?

can you help me to my project? my project is to make a standard calculator that has a clear,backspace,and 0.?
Go to the top of the page
+Quote Post

sam_benne
Group Icon



post 26 Jun, 2008 - 07:12 AM
Post #8
It does have a "0" but yes I can help you if you send me what you already have then I will see what I can do.
Go to the top of the page
+Quote Post

Reverand Dave
**



post 14 Aug, 2008 - 09:46 PM
Post #9
QUOTE(tthompson1114 @ 22 Jun, 2008 - 06:32 PM) *

When I am writing the code for each button to add the number i press to the text box it gives me an error that says "Operator '+' is not defined for types 'System.Windows.Forms.TextBox' and 'String'. I'm pretty new to Visual Basic 2008 and I have no clue what to do. Any suggestions to this problem?


Instead of using the "+" you could use the "&" operator. That way it will include the text in the text box and the int from the button press. so instead of
CODE
Private Sub cmd1_Click()
'Put the value 1 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "1"
End Sub


you would have
CODE
Private Sub cmd1_Click()
'Put the value 1 into the txtNUMBER text box
txtNUMBER = txtNUMBER & "1"
End Sub


This post has been edited by Reverand Dave: 14 Aug, 2008 - 09:48 PM
Go to the top of the page
+Quote Post

halogod32
*



post 18 Sep, 2008 - 02:46 PM
Post #10
If Any One Is Interested I Remade The Whole Code In VB2008 or VB.NET As Its Become Known. I Will Post It Below. It Works Perfectly And I Used All The Same Names As Sam For The Buttons And Variables, cmd0, cmd1 etc.
CODE

Public Class Form1
    'Declare the global variables to be used throughout the form
    Dim mfirst As Single
    Dim msecond As Single
    Dim manswer As Single
    ' Declare the global variables for the operators: Add,Sub,Mul and DIV
    Dim mbutton As Integer
    'Change the sign of the number from + or - or vice versa
    ' Depending on its state now they show in txtNUMBER text box
    Dim Signstate As Boolean
    Private Sub cmdCLEAR_Click()
        'Remove the values in the txtNUMBER text box
    End Sub
    Private Sub cmdEXIT_Click()
        Me.Close()
    End Sub

    Private Sub cmd0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd0.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "0"
    End Sub

    Private Sub cmd1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd1.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "1"
    End Sub

    Private Sub cmd2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd2.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "2"
    End Sub

    Private Sub cmd3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd3.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "3"
    End Sub

    Private Sub cmd4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd4.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "4"
    End Sub

    Private Sub cmd5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd5.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "5"
    End Sub

    Private Sub cmd6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd6.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "6"
    End Sub

    Private Sub cmd7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd7.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "7"
    End Sub

    Private Sub cmd8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd8.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "8"
    End Sub

    Private Sub cmd9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd9.Click
        'Put the value 0 into the txtNUMBER text box
        txtNUMBER.Text = txtNUMBER.Text & "9"
    End Sub

    Private Sub cmdSIGN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSIGN.Click
        Dim MINUSVALUE
        'Sign state = false on load of form
        If txtNUMBER.Text = "-" & txtNUMBER.Text Then
            MsgBox("error start again")
        End If
        If Signstate = False Then
            txtNUMBER.Text = "-" & txtNUMBER.Text
            Signstate = True
        Else
            'SignState = True

            MINUSVALUE = Val(txtNUMBER.Text)
            'Value now positive
            MINUSVALUE = Val("-1" * MINUSVALUE)
            txtNUMBER.Text = MINUSVALUE
            Signstate = False
        End If
    End Sub

    Private Sub cmdSUBTRACT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSUBTRACT.Click
        'User slected the minus button
        mbutton = 2
        'Convert into a number and transfer the value from
        'The text box on the form into the first number
        mfirst = Val(txtNUMBER.Text)

        txtNUMBER.Text = ""
    End Sub

    Private Sub cmdDOT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDOT.Click
        txtNUMBER.Text = txtNUMBER.Text & "."
    End Sub

    Private Sub cmdADD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdADD.Click
        'User slected the add button
        mbutton = 1
        'Convert into a number and transfer the value from
        'The text box on the form into the first number
        mfirst = Val(txtNUMBER.Text)

        txtNUMBER.Text = ""
    End Sub

    Private Sub cmdDIVIDE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDIVIDE.Click
        'User slected the Divide button
        mbutton = 4
        'Convert into a number and transfer the value from
        'The text box on the form into the first number
        mfirst = Val(txtNUMBER.Text)

        txtNUMBER.Text = ""
    End Sub

    Private Sub cmdEQUALS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEQUALS.Click
        msecond = Val(txtNUMBER.Text)

        Select Case mbutton
            Case Is = 1
                manswer = mfirst + msecond
            Case Is = 2
                manswer = mfirst - msecond
            Case Is = 3
                manswer = mfirst * msecond
            Case Is = 4
                manswer = mfirst / msecond
        End Select
        txtNUMBER.Text = manswer
    End Sub

    Private Sub cmdMULTIPLY_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMULTIPLY.Click
        'User slected the multiply button
        mbutton = 3
        'Convert into a number and transfer the value from
        'The text box on the form into the first number
        mfirst = Val(txtNUMBER.Text)

        txtNUMBER.Text = ""
    End Sub

    Private Sub cmdCLEAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCLEAR.Click
        mbutton = 0
        txtNUMBER.Text = ""
        manswer = Nothing
    End Sub

    Private Sub cmdCE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCE.Click
        txtNUMBER.Text = ""
    End Sub
End Class


This post has been edited by halogod32: 18 Sep, 2008 - 02:51 PM
Go to the top of the page
+Quote Post

halogod32
*



post 18 Sep, 2008 - 02:54 PM
Post #11
If You Want A Sample Email/IM Me At
Gmail: {REMOVED}
Yahoo: {REMOVED}
xfire: {REMOVED}
Go to the top of the page
+Quote Post

akhileshbc
Group Icon



post 27 Sep, 2008 - 10:07 PM
Post #12
Hi, why can't you create a control array for this..???
Create a button and give its name as cmd, then copy it and paste it. It will ask you, whether you want to create a control array. Click Yes. Continue pasting till you reached 10 buttons. Then do the below coding:
CODE
Private Sub cmd_Click(Index As Integer)
txtNUMBER = txtNUMBER & CStr(Index)
End Sub

Instead of the long code:
CODE
Private Sub cmd0_Click()
'Put the value 0 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "0"
End Sub

Private Sub cmd1_Click()
'Put the value 1 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "1"
End Sub

Private Sub cmd2_Click()
'Put the value 2 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "2"
End Sub

Private Sub cmd3_Click()
'Put the value 3 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "3"
End Sub

Private Sub cmd4_Click()
'Put the value 4 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "4"
End Sub

Private Sub cmd5_Click()
'Put the value 5 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "5"
End Sub

Private Sub cmd6_Click()
'Put the value 6 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "6"
End Sub

Private Sub cmd7_Click()
'Put the value 7 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "7"
End Sub

Private Sub cmd8_Click()
'Put the value 8 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "8"
End Sub

Private Sub cmd9_Click()
'Put the value 9 into the txtNUMBER text box
txtNUMBER = txtNUMBER + "9"
End Sub


It will be easy to use that single line instead of that 20 or 30 lines...smile.gif
Go to the top of the page
+Quote Post


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 10/15/08 04:22PM

Live Help!

Tutorials

Programming

Web Development

Reference Sheets

Code Snippets

Bye Bye Ads

Free DIC T-Shirt

T-Shirt Example

Related Sites

Monthly Drawing

Thumb Drive

Partners

Top Contributors

Top 10 Kudos This Month