chapter 07
TRANSCRIPT
7-1
aslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhfaslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhf
Lists, Loops, and Printing
Chapter77
McGraw-Hill © 2006 The McGraw-Hill Companies, Inc. All rights reserved.
7-3
Objectives (1 of 2)
Create and use list boxes and combo boxesDifferentiate among the available types of combo
boxesEnter items into list boxes using the Items collection in
the Properties windowAdd and remove items in a list at run timeDetermine which item in a list is selectedUse the Items.Count property to determine the
number of items in a list
7-4
Objectives (2 of 2)
Display a selected item from a listUse Do/Loops and For/Next statements to iterate
through a loopTerminate a loop with the Exit statementSkip to the next iteration of a loop by using the
Continue statementSend information to the printer or the Print Preview
window using the PrintDocument class
7-5
ListBoxes and ComboBoxes (1 of 2)
Have most of the same properties and operating in a similar fashionAn exception is that a combo box control has a
DropDown Style propertyProvide the user with a list of items to select fromVarious styles, choose based on
Space availableNeed to select from an existing listNeed to add to a list
7-6
List Boxes and ComboBoxes (2 of2)
Various Styles of List and Combo boxes
7-7
The Items Collection
List of items in a ListBox or ComboBox is a collection
VB Collections are objects that have properties and methods that allow Adding itemsRemoving itemsReferring to individual elementsCounting itemsClearing the collection
7-8
Filling a List/Using the Properties Window
Design time in Properties windowItems propertyClick on ellipses to open String
Collection EditorType list items, end each line with
Enter keyRun time methods
Items.Add--OR--
Items.Insert
7-9
Filling a List - Design Time
Click ellipses button to open
7-10
Using the Items.Add Method
Use to add new items to the list at run timeGeneral Form
Examples Object.Items.Add(ItemValue)
Me.schoolsListBox.Items.Add("Harvard")Me.schoolsListBox.Items.Add("Stanford")Me.schoolsListBox.Items.Add(schoolsTextBox.Text)Me.majorsComboBox.Items.Add(majorsComboBox.Text)Me.majorsComboBox.Items.Add(majorString)
7-11
Using the Items.Insert Method
Use to add new items to the list at run time in a specific location (index position) in the collection
General Form
Examples
Me.schoolsListBox.Items.Insert(0, "Harvard")Me.majorsComboBox.Items.Insert(1, Me.majorsComboBox.Text)
Object.Items.Insert(IndexPosition, ItemValue)
7-12
The SelectedIndex Property
Index number of currently selected item is stored in the SelectedIndex property
If no list item is selected, SelectedIndex property is negative 1 (-1)
Use to select an item in list or deselect all items in code
7-13
The Items.Count Property
Use to determine number of items in the list
Remember: Items.Count is always one more than the highest possible Selected Index because indexes begin with 0For example, if there are five items in a list:
Items.Count = 5 ANDHighest Index = 4
7-14
Me.schoolsListBox.Items(5) = "University of California"
' Next line references the currently selected item.selectedFlavorString = flavorListBox.Items(flavorListBox.Selected Index).ToString( )
Referencing the Items Collection
Use the index of the item to reference a specific item in the collection
Remember that the index is zero based so the first item in the list is index position zero
7-15
Removing an Item from a List
Use the Items.RemoveAt method to remove an item by index from the list and the Items.Remove method to remove by specifying the text
General Form
ExamplesMe.namesListBox.Items.RemoveAt(0)‘ Remove the item in position indexInteger.Me.schoolsComboBox.Items.RemoveAt(indexInteger)‘ Remove the currently selected item.
Object.Items.RemoveAt(IndexPosition)
7-16
The Items.Remove Method
Use the Items.Remove method to remove an item by specifying the text
General Form
Examples
namesListBox.Items.Remove("My School")schoolsComboBox.Items.Remove(schoolTextBox.Text)' Next line removes the currently selected item.coffeeComboBox.Items.Remove(coffeeComboBox.Text)
Object.Items.Remove(TextString)
7-17
Clearing a List
Use the Items.Clear method to clear all items and empty a combo box or list box
General Form
Examples
Me.schoolsListBox.Items.Clear( )Me.majorsComboBox.Items.Clear( )
Object.Items.Clear( )
7-18
List Box and Combo Box Events
In the Editor window, select the control name in the Class Namelist (at the top-left of the window), drop down the Method Name list, and select the event for which you want to write code or double-click the event name in the Properties window after clicking the Events button
The Editor will create the procedure header for youTextChanged Event
Occurs when user types text into combo boxList box does not have TextChanged Event
Enter Event (control receives focus)-an Enter event fires when a user tabs from control to control
Leave Event (control loses focus)-a Leave event triggers a user tabs between controls
7-19
Do/Loops
A loop repeats a series of instructionsAn iteration is a single execution of the statement(s) in
the loopUsed when the exact number of iterations is unknownA Do/Loop terminates based on a specified condition
Execution of the loop continues while a condition is True or until a condition is True
The condition can be placed at the top or the bottom of the loop
7-20
The Do and Loop Statements -General Form
Do {While |Until} condition
' Statements in loop.
Loop
--OR--
Do
' Statements in loop.
Loop {While | Until} condition
Top of Loop Condition,
Pretest
Bottom of Loop
Condition,Posttest
7-21
Pretest vs. Posttest
Pretest, loop may never be executed since tested BEFORE running
Do While … Loop
Do Until … LoopPosttest, loop will always be executed at least once
Do … Loop While
Do … Loop Until
7-22
Pretest vs. Posttest Diagram
7-23
The Boolean Data Type Revisited
Can help when searching a list for a specific valueBoolean variable is always in one of two states; True
or FalseWhen a particular situation occurs, set Boolean variable
to TrueUse a loop to check for True
Many programmers refer to Boolean variables as switches or flagsSwitches have two states – on or offFlags are considered either up or down
7-24
For/Next Loops
Used to repeat statements in a loop a specific number of times
Uses a numeric counter variable, called Loop Index, which is tested to determine the number of times the statements inside the loop will execute
Loop Index is incremented at the bottom of the loop on each iteration
Step value can be included to specify the incrementing amount to increment Loop Index, step can be a negative number
7-25
The For and Next Statements - General Form
For LoopIndex = InitialValue To TestValue [Step Increment] ' Statements in loop.
Next [LoopIndex]
A For/Next loop can handle all three elements of a counter-controlled loop
Initialize the counter
Increment the counter
Test the counter to determine when it is time to terminate the loop
7-26
For/Next Loop Diagram
7-27
Exiting Loops
In some situations you may need to exit the loop prematurely
Click on the form’s close box or use the VB menu bar or toolbar to stop the program; or Ctrl+Break
Use the Exit For statement inside the loop structureGenerally the Exit For statement is part of an If
statement
7-28
Making Entries Appear Selected
When a user tabs into a text box that already has an entry, the user-friendly approach is to select the text
If a text box fails validation, select the textSelecting the entry in a Text Box
Use the SelectAll methodGood location is in the text box’s Enter event
Selecting an entry in a List BoxSet the SelectedIndex property to make a single item in
a list box appear selected
7-29
Sending Information to the Printer
Components appear in the Printing tab of the toolbox
Most professional programmers using VB use a separate utility program to format printer reports
Several companies sell utilities that do a nice job designing and print reports
VB Professional Edition and Enterprise Edition include Crystal Reports for creating reports from database files
7-30
The PrintDocument Component
Appears in the Component Tray
Execute the Print method to start printing
The code belongs in the Click event procedure for the Print button or menu item that can be selected to begin printing
7-31
Setting Up the Print Output
PrintPage event is fired once for each page to be printed, and is referred to as callback
BeginPrint and EndPrint are also fired at the beginning and end of the printing
PrintPage event includes the argument e as System.Drawing.Printing.PrintPageEventArgs
Properties of the PrintPageEventArgs are useful for handling page margins and sending strings of text to the page
7-32
The Graphics Page
Set up graphics page in memory and then the page is sent to the printer
Can contain strings of text and graphic elements
Specify the exact X and Y coordinates of each element to be printed on the page
X coordinate is the horizontal distance from across the page; the Y coordinate is the vertical distance from the top of the page
7-33
Using the DrawString Method
Used to send a line of text to the graphics pageBelongs to the Graphics object of the
PrintPageEventArgs argumentIs an overloaded method so there are several
forms for calling the methodArguments for the DrawString method include:
What to printWhat font and color to print inWhere to print
Set up the Font and X/Y coordinates to be used before executing the DrawString method
7-34
The DrawString Method
General Form
Examples
DrawString(StringToPrint, Font, Brush, Xcoordinate, Ycoordinate)
e.Graphics.DrawString(printLineString, printFont, Brushes.Black, _ horizontalPrintLocationSingle, verticalPrintLocationSingle)e.Graphics.DrawString("My text string", myFont, Brushes.Black, _ 100.0, 100.0)e.Graphics.DrawString(nameTextBox.Text, New Font("Arial", 10), _ Brushes.Red, leftMarginSingle, currentLineSingle)
7-35
Setting the X and Y Coordinates
For each print line, specify X and Y coordinatesCreate variables declared as Single data type to
set the X and Y values
Dim horizontalPrintLocationSingle As SingleDim verticalPrintLocationSingle As Single
7-36
PrintPageEventArgs
PrintPageEventArgs argument has several useful properties and are used to determine the present settingsMarginBoundsPageBoundsPageSettings
7-37
Printing the Contents of List Box
Techniques for printing, a loop, and the list box properties can be combined to send the contents of a list box to the printer
Use the Items.Count property as the number of iterations to make are a known
Items collections allows for printing out the actual values from the list
7-38
Aligning Decimal Columns
It is important to align the decimal points of numeric data
Proportional fonts make aligning decimal points trickyFormat each number to be printed and measure the
length of the formatted stringDeclare an object as a SizeF Structure-has a Width
propertyUse MeasureString method of the Graphics class to
determine the width of a formatted string in pixels
7-39
Aligning Decimal ColumnsCode Example (1 of 2)
' SizeF structure for font size info. Dim fontSizeF As New SizeF( ) ' Set X for left-aligned column. horizontalPrintLocationSingle = 200 ' Set ending position for right-aligned column. columnEndSingle = 500 ' Format the number. formattedOutputString= amountDecimal.ToString("C") ' Calculate the X position of the amount. ' Measure string in this font. fontSizeF= e.Graphics.MeasureString(formattedOutputString, _ printFont)
7-40
Aligning Decimal ColumnsCode Example (2 of 2)
' SizeF structure for font size info (cont). ' Subtract width of string from the column position. columnXSingle = columnEndSingle - fontSizeF.Width ' Set up the line--each element separately. e.Graphics.DrawString("The Amount = ", printFont, _ Brushes.Black, horizontalPrintLocationSingle, _ verticalPrintLocationSingle) e.Graphics.DrawString(formattedOutputString, printFont, _ Brushes.Black, columnXSingle, verticalPrintLocationSingle) ' Increment line for next line. verticalPrintLocationSingle += lineHeightSingle
7-41
Displaying a Print Preview
The PrintPreviewDialog component is the key to print preview
Add PrintPreviewDialogcomponent to formAppears in the Component TrayDefault name is fine
Assign in code the same PrintDocument object you are using for printing
Execute the ShowDialog method of the PrintPreviewDialog component
7-42
PrintPreviewDialog Component
7-43
The Using Block
System resources such as fonts can be access inside of a Using block
Variables that are declared in a using block are only accessible within that block
The advantage of declaring a variable inside a Using block is that system resources are released as soon as the block terminates
7-44
Printing Multiple Pages
The PrintDocument’s PrintPage event fires once for each page
Set the HasMorePages property of the PrintPageEventArgs argument to True to print more than one page
7-45
Using Static Variables
Static local variables retain their value for the life of the project
Can be useful forRunning totalsRunning countsBoolean switchesStoring current page number/count when printing
multiple pages