Chapter 7: Sub and Function Procedures Programming with Microsoft Visual Basic 2005, Third Edition Creating Sub and Function Procedures Lesson A Objectives • Explain the difference between a Sub procedure and a Function procedure • Create a procedure that receives information passed to it • Explain the difference between passing data by value and passing data by reference • Create a Function procedure Programming with Microsoft Visual Basic 2005, Third Edition 2 Previewing the Completed Application • • • • Go to Run command on Windows Start menu Browse to the VB2005\Chap07 folder Open the Harvey Industries.exe file The Harvey Industries user interface appears Programming with Microsoft Visual Basic 2005, Third Edition 3 Previewing the Completed Application (continued) Figure 7-1: Payroll amounts shown in the user interface Programming with Microsoft Visual Basic 2005, Third Edition 4 Procedures • Procedure – Block of program code that performs a specific task • Two types of procedures in Visual Basic – Sub procedure: does not return a value – Function procedure: does return a value Programming with Microsoft Visual Basic 2005, Third Edition 5 Sub Procedures • Event procedure – Associated with a specific object and event – Called by Visual Basic in response to an event • Independent procedure – Independent of any object and event – Invoked from code using a Call statement • Parameter: data passed to procedure at call time Programming with Microsoft Visual Basic 2005, Third Edition 6 Passing Information to an Independent Sub Procedure • Call syntax: Call procedurename([argumentlist]) – argumentlist: used to pass information (optional) • Argument: data item in an argumentlist • Parameter: data item in a parameterlist • Relationship between arguments and parameters – Should agree in number, position, and data type • Types of arguments passed to a procedure – Variable, literal constant, named constant, keyword Programming with Microsoft Visual Basic 2005, Third Edition 7 Passing Variables • Variables specified by name, address, and value • Passing by value – Passes a copy of the data stored in a variable • Passing by reference – Passes the memory address of a variable – Allows a procedure to change contents of variable Programming with Microsoft Visual Basic 2005, Third Edition 8 Passing by Value • Copy of data, not variable address, is passed • How to pass by value – Include the keyword ByVal before a parameter • Reasons to pass by value – Procedure needs to know contents of variable – Procedure does not need to change original value • By default, Visual Basic passes by value Programming with Microsoft Visual Basic 2005, Third Edition 9 Passing By Value (continued) Figure 7-4: Code for the Pet Information application (continued) Programming with Microsoft Visual Basic 2005, Third Edition 10 Passing By Value (continued) Figure 7-4: Code for the Pet Information application Programming with Microsoft Visual Basic 2005, Third Edition 11 Passing By Reference • Variable address (memory location) is passed • Receiving procedure can access variable • Reason to pass by reference – Procedure needs to change a variable’s contents • How to pass by reference – Include keyword ByRef before a parameter Programming with Microsoft Visual Basic 2005, Third Edition 12 Passing By Reference (continued) Figure 7-8: Code for the Gross Pay application (continued) Programming with Microsoft Visual Basic 2005, Third Edition 13 Passing By Reference (continued) Figure 7-8: Code for the Gross Pay application (continued) Programming with Microsoft Visual Basic 2005, Third Edition 14 Passing By Reference (continued) Figure 7-8: Code for the Gross Pay application Programming with Microsoft Visual Basic 2005, Third Edition 15 Function Procedures • Function procedure – A block of code that performs a specific task – Returns a value after completing task • Examples of built-in functions: Val and InputBox • Create your own functions using syntax template – As datatype in header indicates return type of data – Return expression type must agree with As datatype Programming with Microsoft Visual Basic 2005, Third Edition 16 Function Procedures (continued) Figure 7-11: Syntax and an example of a Function procedure Programming with Microsoft Visual Basic 2005, Third Edition 17 The Pine Lodge Application • Objective: calculate employee’s new pay • Application uses a function to calculate new pay • Function requirements – Input: employee’s current hourly pay and raise rate – Process: calculate raise and then add to current pay – Output: return new pay to calling procedure Programming with Microsoft Visual Basic 2005, Third Edition 18 The Pine Lodge Application (continued) Figure 7-12: Sample run of the Pine Lodge application Programming with Microsoft Visual Basic 2005, Third Edition 19 Summary – Lesson A • Two types of procedures: event and independent • Function: performs a task and returns a value • Independent procedures and functions are called from the application’s code • Pass by value: send a copy of variable contents to a procedure or function • Pass by reference: send a variable address to a procedure or function Programming with Microsoft Visual Basic 2005, Third Edition 20 Coding The Harvey Industries Payroll Application Lesson B Objectives • • • • Add a combo box to a form Add items to a combo box Sort the contents of a combo box Select a combo box item from code Programming with Microsoft Visual Basic 2005, Third Edition 21 Coding The Harvey Industries Payroll Application Lesson B Objectives (continued) • Determine the current item in a combo box • Round a number • Code a combo box’s TextChanged event procedure Programming with Microsoft Visual Basic 2005, Third Edition 22 Harvey Industries • Objective: calculate and display pay information • Components of employee pay – – – – – Employee’s weekly gross pay Social Security tax Medicare (FICA) tax Federal withholding tax (FWT) Net pay • Input: name, marital status, hours, rate, allowances Programming with Microsoft Visual Basic 2005, Third Edition 23 Harvey Industries (continued) Figure 7-15: Partially completed user interface for the Harvey Industries application Programming with Microsoft Visual Basic 2005, Third Edition 24 Including a Combo Box in an Interface • Combo box – Allows user to select from a number of choices – Allows user to type an entry not on list – Can save a space on a form • List box does not share features two and three • DropDownStyle property – Values: Simple, DropDown (default), DropDownList Programming with Microsoft Visual Basic 2005, Third Edition 25 Including a Combo Box in an Interface (continued) Figure 7-16: Examples of the combo box styles Programming with Microsoft Visual Basic 2005, Third Edition 26 Including a Combo Box in an Interface (continued) • Change in item value causes TextChanged event • Use Item collection’s Add method to add an item • Other properties of a combo box – – – – Sorted: sorts items in dictionary order SelectedIndex: used to select an item in list portion SelectedItem: determines which item is selected Text: used to get or set a value in text portion Programming with Microsoft Visual Basic 2005, Third Edition 27 Including a Combo Box in an Interface (continued) Figure 7-17: Code corresponding to the combo boxes shown in Figure 7-16 Programming with Microsoft Visual Basic 2005, Third Edition 28 Coding the xCalcButton’s Click Event Procedure • Review pay components to calculate and display: – – – – Gross pay FWT (federal withholding tax) FICA tax Net pay • Procedure will call the GetFwt function Programming with Microsoft Visual Basic 2005, Third Edition 29 Coding the xCalcButton’s Click Event Procedure (continued) Figure 7-22: Pseudocode for the xCalcButton’s Click event procedure Programming with Microsoft Visual Basic 2005, Third Edition 30 Coding the GetFwt Function • How to calculate weekly taxable wages – Multiply number of withholding allowances by $63.46 – Subtract result in first step from weekly wages • Determining federal withholding tax (FWT) – Evaluate weekly taxable wages and filing status – Use data to look up FWT in special FWT tables • GetFwt function emulates FWT table lookup Programming with Microsoft Visual Basic 2005, Third Edition 31 Coding the GetFwt Function (continued) Figure 7-25: Weekly FWT tables (Single person) Programming with Microsoft Visual Basic 2005, Third Edition 32 Coding the GetFwt Function (continued) Figure 7-30: FWT calculations for Single taxpayers Programming with Microsoft Visual Basic 2005, Third Edition 33 Completing the xCalcButton’s Click Event Procedure • Call GetFwt function from Click event procedure • Three values passed to GetFwt – status variable contents – allowances variable contents – gross variable contents • Value returned by GetFwt assigned to fwt variable • Use Math.Round function to round three values – Gross pay, FWT, and FICA tax amounts Programming with Microsoft Visual Basic 2005, Third Edition 34 Completing the xCalcButton’s Click Event Procedure (continued) Figure 7-34: Payroll calculations displayed in the interface Programming with Microsoft Visual Basic 2005, Third Edition 35 Summary – Lesson B • Combo box displays a list of items for selection • Combo box allows user to type entry not on list • Specify style of combo box using DropDownStyle property • Use Items collection’s Add method to add items to a Combo box • Math.Round function rounds off values to arbitrary number of decimal places Programming with Microsoft Visual Basic 2005, Third Edition 36 Completing the Harvey Industries Payroll Application Lesson C Objectives • Prevent a form from closing Programming with Microsoft Visual Basic 2005, Third Edition 37 Coding The MainForm’s FormClosing Event Procedure • FormClosing event – Occurs when a form is about to be closed • Two ways to cause a FormClosing event – Computer processes the Me.Close() statement – User clicks the Close button on the form’s title bar • Requirement for FormClosing event procedure – Verifying that user wants to close the application – Taking appropriate action based on user’s response Programming with Microsoft Visual Basic 2005, Third Edition 38 Coding The MainForm’s FormClosing Event Procedure (continued) Figure 7-35: Pseudocode for the MainForm’s FormClosing event procedure Programming with Microsoft Visual Basic 2005, Third Edition 39 Coding The MainForm’s FormClosing Event Procedure (continued) Figure 7-36: Message box displayed by the FormClosing event procedure Programming with Microsoft Visual Basic 2005, Third Edition 40 Summary – Lesson C • FormClosing event occurs when Me.Close () is called • FormClosing event also occurs when Close button is clicked • Form’s FormClosing event procedure is processed before a form is about to close Programming with Microsoft Visual Basic 2005, Third Edition 41