Chapter 5 Lists, Loops, Validation, and More Chapter 5, Slide 1

Download Report

Transcript Chapter 5 Lists, Loops, Validation, and More Chapter 5, Slide 1

Chapter 5
Lists, Loops,
Validation, and More
Chapter 5, Slide 1
Starting Out with Visual Basic 3rd Edition
Chapter 5 Topics
 Looping: This chapter covers the Visual Basic
looping statements
• Do … While
• Do … Until
• For … Next
 Boxes: It also discusses the use of
• Input Boxes
• List Boxes
• Combo Boxes
 Validation: As well as presenting some properties
and events used for user input validation
Chapter 5, Slide 2
Starting Out with Visual Basic 3rd Edition
Section 5.1
Input Boxes
Input Boxes Provide a Simple Way to Gather
Input Without Placing a Text Box on a Form
Chapter 5, Slide 3
Starting Out with Visual Basic 3rd Edition
Format of the InputBox Function
InputBox(Prompt [,Title] [,Default] [,Xpos] [,Ypos])






Prompt - message to the user (required)
Title - text for the box's title bar
Default - default text for user's input
Xpos - X coordinate for the box's position
Ypos - Y coordinate for the box's position
Square brackets around Title and following
arguments indicate these are optional
Chapter 5, Slide 4
Starting Out with Visual Basic 3rd Edition
Sample InputBox Usage
strUserInput = InputBox("Enter the distance.", _
"Provide a Value", "150")
 If the users clicks OK without entering a value, 150 will be
assigned to strUserInput due to the default value
Chapter 5, Slide 5
Starting Out with Visual Basic 3rd Edition
Xpos, Ypos, and Twips
 Xpos specifies the distance from the left of
the screen to the left side of the box
 Ypos, from the top of the screen to the top of
the box
 Both are specified in units called twips
 One twip is 1/440th inch
Chapter 5, Slide 6
Starting Out with Visual Basic 3rd Edition
Section 5.2
List Boxes
List Boxes Display a List of Items and Allow the
User to Select an Item From the List
Chapter 5, Slide 7
Starting Out with Visual Basic 3rd Edition
ListBox Items Property
 This property holds the entire list of items
from which the user may choose
 The list values may be established at run
time or as part of the form design
 To set list values in the form design:
•
•
•
•
Select the list box in the Design window
Click on ellipses button for the Items property
This property is a collection, a list of values
Type each value on a separate line
Chapter 5, Slide 8
Starting Out with Visual Basic 3rd Edition
ListBox Items.Count Property
 This property holds the number of items that
are stored in the Items property
 Example of use:
If lstEmployees.Items.Count = 0 Then
MessageBox.Show("The list has no items!")
End If
 The number of items in the list can be
assigned to an integer variable
numEmployees = lstEmployees.Items.Count
Chapter 5, Slide 9
Starting Out with Visual Basic 3rd Edition
Item Indexing
 The Items property values can be accessed
from your VB code
 Each item value is given a sequential index
• The first item has an index of 0
• The second item has an index of 1, etc.
 Example:
name = lstCustomers.Items(2)
' Access the 3rd item value
Chapter 5, Slide 10
Starting Out with Visual Basic 3rd Edition
Index Out of Range Error
 The index of the last item is always
list.Items.Count-1
 Reference to an index more than Count-1 or
less than zero throws an exception
 An exception handler can trap this error
 The variable ex captures the exception thrown
Try
strInput = lstMonths.Items(n).ToString()
Catch ex as Exception
MessageBox.Show(ex.Message)
End Try
Chapter 5, Slide 11
Starting Out with Visual Basic 3rd Edition
ListBox SelectIndex Property
 Use the SelectIndex property to retrieve the
index of an item selected by the user
 If no item is selected, the value is set to -1
(an invalid index value)
 Can use SelectIndex to determine if an item
has been selected by comparing to -1
 Example:
If lstLocations.SelectedIndex <> -1 Then
location = lstLocations.Items(lstLocations.SelectedIndex)
End If
Chapter 5, Slide 12
Starting Out with Visual Basic 3rd Edition
ListBox SelectedItem Property
 Instead of using the SelectedIndex property
as follows:
If lstMonths.SelectedIndex <> -1 Then
month = lstMonths.Items(lstMonths.SelectedIndex)
End If
 The SelectedItem property can be used to
retrieve a selected item value as shown
If lstMonths.SelectedIndex <> -1 Then
month = lstMonths.SelectedItem.Value
End If
Chapter 5, Slide 13
Starting Out with Visual Basic 3rd Edition
ListBox Sorted Property
 Sorted is a boolean property
 If true, causes the values in the Items
property to be displayed in alphabetical order
 If false, values in the Items property are
displayed in the order they were added
Chapter 5, Slide 14
Starting Out with Visual Basic 3rd Edition
ListBox Items.Add Method
 Items can be added to the end of a ListBox
list in your VB code using the Add method
 Format is
ListBox.Items.Add(Item)
 ListBox is the name of the control
 Item is the value to add to the Items property
 Example:
lstStudents.Items.Add("Sharon")
Chapter 5, Slide 15
Starting Out with Visual Basic 3rd Edition
ListBox Items.Insert Method
 Items can be added at a specific position of a
ListBox in VB code using the Insert method
ListBox.Items.Insert(Index, Item)
 Index specifies position where Item is placed
 Index is zero based similar to SelectedIndex
property
 Items that follow are “pushed” down
 Example inserting "Jean“ as the 3rd item
lstStudents.Items.Insert(2, "Jean")
Chapter 5, Slide 16
Starting Out with Visual Basic 3rd Edition
ListBox Methods to Remove Items
 ListBox.Items.RemoveAt(Index)
• Removes item at the specified index
 ListBox.Items.Remove(Item)
• Removes item with value specified by Item
 ListBox.Items.Clear()
• Removes all items in the Items property
 Examples:
lstStudents.Items.RemoveAt(2)
lstStudents.Items.Remove(“Jean”)
lstStudents.Items.Clear()
Chapter 5, Slide 17
‘remove 3rd item
‘remove item Jean
‘remove all items
Starting Out with Visual Basic 3rd Edition
Other ListBox Methods
 ListBox.Items.Contains(Item)
• Returns true if Item is found in the collection
 ListBox.Items.IndexOf(Item)
• Returns an integer with the index position of
the first occurrence of Item in the collection
 Examples:
blnFound = lstMonths.Items.Contains(“March”)
intIndex = lstMonths.Items.IndexOf(“March”)
 Tutorial 5-1 provides more examples of
ListBox controls, methods and properties
Chapter 5, Slide 18
Starting Out with Visual Basic 3rd Edition
Section 5.3
The Do While Loop
A Loop Is Part of a Program
That Repeats
Chapter 5, Slide 19
Starting Out with Visual Basic 3rd Edition
Repetition Structure (or Loop)
 Visual Basic has three structures that allow a
statement or group of statements to repeat
• Do While
• Do Until
• For...Next
Chapter 5, Slide 20
Starting Out with Visual Basic 3rd Edition
Do While Flowchart
 The Do While loop
 If the expression is
true, the statement(s)
are executed
 Expression is then
Expression
evaluated again
 As long as the
False
expression remains
true, the statement(s)
will continue to be executed
Chapter 5, Slide 21
True
statement(s)
Starting Out with Visual Basic 3rd Edition
Do While Syntax
 Do, While, and Loop are new keywords
 The Do While statement marks the beginning
of the loop
 The Loop statement marks the end
 The statements to repeat are found between
these and called the body of the loop
Do While expression
statement(s)
Loop
Chapter 5, Slide 22
Starting Out with Visual Basic 3rd Edition
Do While Example
Private Sub btnRunDemo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnRunDemo.Click
' Demonstrate the Do While loop
Dim intCount As Integer = 0
Do While intCount < 10
lstOutput.Items.Add("Hello")
intCount += 1
Loop
End Sub
Note that programming style
dictates the body of the
loop be indented for clarity
Chapter 5, Slide 23
Starting Out with Visual Basic 3rd Edition
Infinite Loops
 A loop must have some way to end itself
 Something within the body of the loop must
eventually force the test expression to false
 In the previous example
• The loop continues to repeat
• intCount increases by one for each repetition
• Finally intCount is not < 10 and the loop ends
 If the test expression can never be false, the
loop will continue to repeat forever
• This is called an infinite loop
Chapter 5, Slide 24
Starting Out with Visual Basic 3rd Edition
Counters
 Variables called counters are frequently
used to control Do While loops
• See intCount from the previous example
 Counters are typically initialized before the
loop begins
Dim intCount As Integer = 0
 The counter is then modified in the body of
the loop
intCount += 1
 The test expression ends the loop when the
counter compares to some value
Chapter 5, Slide 25
Starting Out with Visual Basic 3rd Edition
Pretest vs. Posttest Loops
 Previous Do While loops are in pretest form
• Expression is tested before the body of the
loop is executed
• The body may not be executed at all
 Do While loops also have a posttest form
•
•
•
•
The body of the loop is executed first
Then the expression is evaluated
Body repeats as long as expression is true
The body of a posttest loop must be executed
at least once
Chapter 5, Slide 26
Starting Out with Visual Basic 3rd Edition
Posttest Loop Syntax and Flowchart
Do
statement(s)
Loop While expression
 The statement(s) must
be executed at least
once, irrespective of
the expression used
statement(s)
Expression
True
False
Chapter 5, Slide 27
Starting Out with Visual Basic 3rd Edition
A Posttest Running Total Loop
intCount = 1
' Initialize the counter
decTotal = 0
' Initialize total
Do
strInput = InputBox("Enter the sales for day " & _
intCount.ToString, "Sales Amount Needed")
If strInput <> "" Then
decSales = CDec(strInput)
decTotal += decSales
' Add sales to total
intCount += 1
' Increment the counter
End If
Loop While intCount <= 5
 Tutorial 5-4 uses the code above in pretest form
as part of a more complete example
 Tutorial 5-5 demonstrates how to structure a loop
such that the user can specify the iterations
Chapter 5, Slide 28
Starting Out with Visual Basic 3rd Edition
Section 5.4
The Do Until and
For Next Loops
A Do Until Loop Iterates Until Its Test Expression Is
True
The For...Next Loop Is Designed to Use a Counter
Variable and Iterates a Specific Number of Times
Chapter 5, Slide 29
Starting Out with Visual Basic 3rd Edition
Do Until vs. Do While
 A Do While loop
• Repeats as long as its test expression is true
• Ends when its test expression becomes false
 A Do Until loop
• Repeats as long as its test expression is false
• Ends when its test expression becomes true
 The Do Until loop has a pretest and posttest
form just as a Do While loop
Chapter 5, Slide 30
Starting Out with Visual Basic 3rd Edition
Do Until: Pretest & Posttest Forms
 Pretest:
Do Until expression
statement(s)
Loop
 Posttest:
Do
statement(s)
Loop Until expression
 Tutorial 5-6 provides a hands-on example of
a pretest Do Until loop
Chapter 5, Slide 31
Starting Out with Visual Basic 3rd Edition
Do Until Loop – Test Score Average
strInput = InputBox("How many test scores do you " _
& “want to average?", "Enter a Value")
intNumScores = CInt(strInput)
‘ Store the starting values in total and count
sngTotal = 0
intCount = 1
‘ Get the test scores
Do Until intCount > intNumScores
strInput = InputBox("Enter the value for test score " _
& intCount.ToString, "Test Score Needed")
sngTotal = sngTotal + CSng(strInput)
intCount = intCount + 1
Loop
‘ Calculate the average
If intNumScores > 0 then
sngAverage = sngTotal / intNumScores
Else
sngAverage = 0.0
End If
Chapter 5, Slide 32
Starting Out with Visual Basic 3rd Edition
For…Next Loop
 Ideal for loops that require a counter
For CounterVariable = StartValue To EndValue [Step]
statement
Next [CounterVariable]





For, To, and Next are keywords
CounterVariable tracks number of iterations
StartValue is initial value of counter
EndValue is counter number of final iteration
Optional Step allows a counter increment
other than 1 for each iteration of the loop
Chapter 5, Slide 33
Starting Out with Visual Basic 3rd Edition
For…Next Flowchart
set
counter
to StartValue
Counter =
EndValue?
False
statement(s)
increment
counter
True
Chapter 5, Slide 34
Starting Out with Visual Basic 3rd Edition
For…Next Example
 The following code from Tutorial 5-7 uses a
For…Next loop to place the squares of the
numbers 1 through 10 in a ListBox
For intCount = 1 To 10
intSquare = CInt(intCount ^ 2)
strTemp = "The square of " & intCount.ToString _
& “ is “ & intSquare.ToString
lstOutput.Items.Add(strTemp)
Next intCount
 Tutorial 5-8 uses a For…Next loop to move
a PictureBox control around a window
Chapter 5, Slide 35
Starting Out with Visual Basic 3rd Edition
More on the StepValue
 It’s optional and if not specified, defaults to 1
 The following loop iterates 11 times with
counter values 0, 10, 20, …, 80, 90, 100
For x = 0 To 100 Step 10
MessageBox.Show("x is now " & x.ToString)
Next x
 StepValue may be negative, causing the
loop to count downward
For x = 10 To 1 Step -1
MessageBox.Show("x is now " & x.ToString)
Next x
Chapter 5, Slide 36
Starting Out with Visual Basic 3rd Edition
Exiting a Loop Prematurely
 In some cases it is convenient to end a loop
before the test condition would end it
 The following statements accomplish this
• Exit Do (used in Do While or Until loops)
• Exit For (used in For Next loops)
 Use this capability with caution
• It bypasses normal loop termination
• Makes code more difficult to debug
Chapter 5, Slide 37
Starting Out with Visual Basic 3rd Edition
Example: Exit a Loop Prematurely
maxNumbers = CInt(InputBox("How many numbers do " & _
"you wish to sum?"))
total = 0
For x = 1 to maxNumbers
input = InputBox("Enter a number.")
If input = "" Then
Exit For
Else
num = CDbl(input)
total += num
End If
Next x
MessageBox.Show(“Sum of the numbers is " & total.ToString)
Chapter 5, Slide 38
Starting Out with Visual Basic 3rd Edition
When to Use the Do While Loop
 Use Do While when the loop should repeat
as long as the test expression is true
 Can be written as a pretest or posttest loop
 A pretest Do While is ideal when the body
should not be perfomed for a test expression
that is initially false
 Posttest loops are ideal when you always
want the loop to iterate at least once
Chapter 5, Slide 39
Starting Out with Visual Basic 3rd Edition
When to Use the Do Until Loop
 Use Do Until when the loop should repeat as
long as the test expression is false
 Can be written as a pretest or posttest loop
 A pretest Do Until is ideal when the body
should not be perfomed for a test expression
that is initially true
 Posttest loops are ideal when you always
want the loop to iterate at least once
Chapter 5, Slide 40
Starting Out with Visual Basic 3rd Edition
When to Use the For Next Loop
 The For...Next loop is a pretest loop ideal
when a counter is needed
 It automatically increments the counter
variable at the end of each iteration
 The loop repeats as long as the counter
variable is not greater than an end value
 Used primarily when the number of required
iterations is known
Chapter 5, Slide 41
Starting Out with Visual Basic 3rd Edition
5.6
Nested Loops
Nested Loops Are Necessary When a Task Performs
a Repetitive Operation and That Task Itself Must Be
Repeated
Chapter 5, Slide 42
Starting Out with Visual Basic 3rd Edition
Nested Loops
 The body of a loop can contain any type of
VB statements including another loop
 When a loop is found within the body of
another loop, it’s called a nested loop
Chapter 5, Slide 43
Starting Out with Visual Basic 3rd Edition
Nested Loop Example
 A clock is an example of a nested loop
For hours = 0 To 24
lblHours.Text = hours.ToString
For minutes = 0 To 59
lblMinutes.Text = minutes.ToString
For seconds = 0 To 59
lblSeconds.Text = seconds.ToString
Next seconds
Next minutes
Next hours
Chapter 5, Slide 44
Starting Out with Visual Basic 3rd Edition
Nested Loop Example Analysis
 The innermost loop will iterate 60 times for
each iteration of the middle loop
 The middle loop will iterate 60 times for each
iteration of the outermost loop
 24 iterations of the outermost loop requires:
• 1,440 iterations of the middle loop
• 86,400 iterations of the innermost loop
 An inner loop goes through all its iterations for
each iteration of the outer loop
 Multiply iterations of all loops to get the total
iterations of the innermost loop
Chapter 5, Slide 45
Starting Out with Visual Basic 3rd Edition
Section 5.6
Multicolumn List Boxes,
Checked List Boxes
and Combo Boxes
A Multicolumn List Box Displays Items in Columns
A Checked List Box Displays a Check Box Next to Each Item in the List
A Combo Box Is Like a List Box Combined With a Text Box
Chapter 5, Slide 46
Starting Out with Visual Basic 3rd Edition
List Box Multicolumn Property





The ListBox has a Multicolumn property
Boolean property with default value of false
If set to true, entries can appear side by side
Below, ColumnWidth is set to 30
Note the appearance of a horizontal scroll
bar in this case
Chapter 5, Slide 47
Starting Out with Visual Basic 3rd Edition
Checked List Box
 A form of ListBox with the list box properties
and methods already discussed
 One item at a time may be selected but many
items in a Checked List Box can be checked
 The CheckOnClick property determines how
items may be checked
• False - the user clicks an item once to select
it, again to check it
• True - the user clicks an item only once to
both select it and check it
Chapter 5, Slide 48
Starting Out with Visual Basic 3rd Edition
Finding the Status of Checked Items
 The GetItemChecked method returns true if
the item at Index has been checked
CheckedListBox.GetItemChecked(Index)
Dim i as Integer
Dim intCheckedCities as Integer = 0
For i = 0 to clbCities.Items.Count – 1
If clbCities.GetItemChecked(i) = True Then
intCheckedCities += 1
End If
Next i
MessageBox.Show(“You checked “ & _
intCheckedCities.Tostring() & “ cities.”)
Chapter 5, Slide 49
Starting Out with Visual Basic 3rd Edition
Combo Boxes Similar to List Boxes
 Both display a list of items to the user
 Both have Items, Items.Count,
SelectedIndex, SelectedItem, and Sorted
properties
 Both have Items.Add, Items.Clear,
Items.Remove, and Items.RemoveAt
methods
 These properties and methods work the
same with combo boxes and list boxes
Chapter 5, Slide 50
Starting Out with Visual Basic 3rd Edition
Additional Combo Box Features
 A combo box also functions like a text box
 The user may enter text into a combo box
 Or the user may select the text from a series
of list box type choices
Chapter 5, Slide 51
Starting Out with Visual Basic 3rd Edition
Combo Box Styles
 Simple Combo Box
 List is always shown
Chapter 5, Slide 52
 Drop-down Combo Box
 List appears when user
clicks down arrow
Starting Out with Visual Basic 3rd Edition
Combo Box Styles
 Drop-down List Combo Box
 Behaves like a Drop-Down
Combo Box, but the user
may not enter text directly
 Tutorial 5-9 demonstrates each
style of combo box
Chapter 5, Slide 53
Starting Out with Visual Basic 3rd Edition
Section 5.7
Input Validation
As Long As the User of an Application Enters Bad Input, the
Application Will Produce Bad Output
Applications Should Be Written to Filter Out Bad Input
Chapter 5, Slide 54
Starting Out with Visual Basic 3rd Edition
Examples of Input Validation
 Numbers are checked to ensure they are within a
range of possible values
• For example, there are 168 hours in a week
• A person can’t work more than 168 hours a week
 Values are checked for their “reasonableness”
• A person might possibly work 168 hours in a week
• However, this is highly improbable
 Items selected from a menu or a set of choices are
checked to ensure these options are available
 Variables are checked for values that might cause
problems, such as division by zero
Chapter 5, Slide 55
Starting Out with Visual Basic 3rd Edition
CausesValidation/Validating Event
 A control’s Validating event is triggered when
focus is shifting from that control to a control
whose CausesValidation property is true
 The Validating event of the control losing the
focus fires before focus is lost
 This allows your code to validate an entry
just before focus shifts
• If user shifts focus, input must be complete
 Tutorial 5-10 demonstrates this capability
Chapter 5, Slide 56
Starting Out with Visual Basic 3rd Edition
The Validated Event
 A control’s Validated event is triggered
• After the Validating event
• After focus has been lost
 Allows operations on input that should occur
only after the user moves away from the field
Chapter 5, Slide 57
Starting Out with Visual Basic 3rd Edition
Using the With…End Statement
 A With statement establishes a default object
in effect until an End With is encountered
 Instead of repeating txtNum1 in this code
txtNum1.SelectionStart = 0
txtNum1.SelectionLength = txtNum1.Text.Length
 With allows you to reference the txtNum1
object without specifying it repeatedly
With txtNum1
.SelectionStart = 0
.SelectionLength = .Text.Length
End With
Chapter 5, Slide 58
Starting Out with Visual Basic 3rd Edition
Section 5.8
Tool Tips
Tool Tips Are a Standard and Convenient Way of Providing
Help to the Users of an Application
Visual Basic Provides the ToolTip Control, Which Allows You to
Assign Tool Tips to the Other Controls on a Form
Chapter 5, Slide 59
Starting Out with Visual Basic 3rd Edition
What is a Tool Tip?
 A Tool Tip is the short text message you see
when holding the mouse over a control
 These are easy to set up and use in Visual
Basic forms
Chapter 5, Slide 60
Starting Out with Visual Basic 3rd Edition
Setting Up ToolTips
 Display the form design window
 Double-click the ToolTip tool in the Toolbox
 The ToolTip control is invisible at runtime so
• It appears in the component tray, not the form
• Component tray shows at the bottom of the
design window
 ToolTips are now enabled for this form
 Form controls have a ToolTip property
 This new property holds the text string that
will be displayed for that control
Chapter 5, Slide 61
Starting Out with Visual Basic 3rd Edition
Controlling the Tool Tips
 Select the ToolTip control from the tray
 View Properties window to see the following
• An InitialDelay property that regulates the
delay before a tip appears
• An AutoPopDelay that determines how long a
tip is displayed
• ReshowDelay determines the time between
the display of different tips as the user moves
the mouse from control to control
Chapter 5, Slide 62
Starting Out with Visual Basic 3rd Edition
Section 5.9
Building the Vehicle Loan
Calculator Application
This application utilizes loops, input validation, and tool tips.
It also makes use of some Visual Basic intrinsic financial
functions.
Chapter 5, Slide 63
Starting Out with Visual Basic 3rd Edition