Top Banner
McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7
44

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

Jan 29, 2016

Download

Documents

Martina Ramsey
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved.

Lists, Loops, and Printing

Chapter 7

Page 2: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-2

Objectives (1 of 2)

• Create and use list boxes and combo boxes.

• Differentiate among the available types of combo boxes.

• Enter items into list boxes using the Items collection in the Properties window.

• Add and remove items in a list at run time.

• Determine which item in a list is selected.

• Use the Items.Count property to determine the number of items in a list.

Page 3: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-3

Objectives (2 of 2)

• Display a selected item from a list.

• Use Do/Loops and For/Next statements to iterate through a loop.

• Terminate a loop with the Exit statement.

• Skip to the next iteration of a loop by using the Continue statement.

• Send information to the printer or the Print Preview window using the PrintDocument class.

Page 4: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-4

Filling a List — Design Time

Click ellipses button to open

Page 5: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-5

ListBoxes and ComboBoxes (1 of 2)

• Have most of the same properties and operate in a similar fashion

•An exception is that a combo box control has a DropDownStyle property

• Provide the user with a list of items to select from

• Various styles — choose based on

•Space available

•Need to select from an existing list

•Need to add to a list

Page 6: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-6

List Boxes and ComboBoxes (2 of2)

Various Styles of List and Combo boxes

Page 7: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 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 items• Removing items• Referring to individual elements• Counting items• Clearing the collection

Page 8: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-8

Filling a List/Using the Properties Window

• Design time in Properties window• Items property

• Click on ellipses to open StringCollection Editor.

• Type list items, end each line withEnter key.

• Run time methods• Items.Add

--OR--

• Items.Insert

Page 9: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-9

Using the Items.Add Method

• Use to add new items to the list at run time.

• General Form

• ExamplesObject.Items.Add(ItemValue)

SchoolsListBox.Items.Add("Harvard")SchoolsListBox.Items.Add("Stanford")SchoolsListBox.Items.Add(schoolsTextBox.Text)MajorsComboBox.Items.Add(majorsComboBox.Text)MajorsComboBox.Items.Add(majorString)

Page 10: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-10

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

• ExamplesSchoolsListBox.Items.Insert(0, "Harvard")MajorsComboBox.Items.Insert(1, MajorsComboBox.Text)

Object.Items.Insert(IndexPosition, ItemValue)

Page 11: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-11

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.

Page 12: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-12

The Items.Count Property

• to determine number of items in the listRemember: Items.Count is always one more than the highest possible SelectedIndex, because indexes begin with 0For example, if there are five items in a list:

Items.Count = 5 ANDHighest Index = 4

Page 13: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-13

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.

SchoolsListBox.Items(5) = "University of California"MajorLabel.Text = MajorsComboBox.Items(IndexInteger)SelectedMajorLabel.Text = MajorsComboBox.Items(MajorsComboBox.SelectedIndex)SelectedMajorLabel.Text = MajorsComboBox.Text

Page 14: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-14

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

• ExamplesNamesListBox.Items.RemoveAt(0)' Remove the item in position IndexInteger.SchoolsComboBox.Items.RemoveAt(IndexInteger)CoffeeComboBox.Items.RemoveAt(CoffeeComboBox.SelectedIndex)

Object.Items.RemoveAt(IndexPosition)

Page 15: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-15

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)

Page 16: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-16

Clearing a List

• Use the Items.Clear method to clear all items and empty a combo box or list box.

• General Form

• Examples

SchoolsListBox.Items.Clear( )MajorsComboBox.Items.Clear( )

Object.Items.Clear( )

Page 17: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-17

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 you.

• TextChanged Event

• Occurs when user types text into combo box

• List 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 as user tabs between controls.

Page 18: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-18

Do/Loops

• A loop repeats a series of instructions.

• An iteration is a single execution of the statement(s) in the loop.

• Used when the exact number of iterations is unknown

• A 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.

Page 19: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-19

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/Entry test

Bottom of Loop

Condition,Posttest/ Exit

Page 20: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-20

Pretest vs. Posttest

• Pretest — loop may never be executed since tested BEFORE running.

Do While … Loop

Do Until … Loop

• Posttest — loop will always be executed at least once.

Do … Loop While

Do … Loop Until

Page 21: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-21

Pretest vs. Posttest Diagram

Page 22: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-22

The Boolean Data Type Revisited

• Can help when searching a list for a specific value

• Boolean variable is always in one of two states: True or False.

• When a particular situation occurs, set Boolean variable to True.

• Use a loop to check for True

• Many programmers refer to Boolean variables as switches or flags.

• Switches have two states — on or off.

• Flags are considered either up or down.

Page 23: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-23

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.

Page 24: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-24

The For and Next Statements — General Form

For LoopIndex [As DataType] = 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.

Page 25: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-25

For/Next Loop Diagram

Page 26: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-26

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 structure.

• Generally, the Exit For statement is part of an If statement.

Page 27: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-27

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 text.

• Selecting the entry in a Text Box• Use the SelectAll method

• Good location is in the text box’s Enter event

• Selecting an entry in a List Box• Set the SelectedIndex property to make a single item in a

list box appear selected.

Page 28: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-28

Sending Information to the Printer

• Components appear in the Printing tab of the toolbox.

• Most professional programmers use a separate utility program to format printer reports.

• Several companies sell utilities that do a nice job designing and printing reports.

• VB Professional Edition and Enterprise Edition include Crystal Reports for creating reports from database files.

Page 29: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-29

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.

Page 30: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-30

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.

Page 31: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-31

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.

Page 32: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-32

Using the DrawString Method

• Used to send a line of text to the graphics page

• Belongs to the Graphics object of the PrintPageEventArgs argument

• Is an overloaded method so there are several forms for calling the method

• Arguments for the DrawString method include:• What to print

• What font and color to print in

• Where to print

• Set up the Font and X/Y coordinates to be used before executing the DrawString method.

Page 33: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-33

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)

Page 34: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-34

Setting the X and Y Coordinates

• For each print line, specify X and Y coordinates.

• Create variables declared as Single data type to set the X and Y values.

Dim HorizontalPrintLocationSingle As SingleDim VerticalPrintLocationSingle As Single

Page 35: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-35

PrintPageEventArgs

• PrintPageEventArgs argument has several useful properties that are used to determine the present settings.–MarginBounds–PageBounds–PageSettings

Page 36: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-36

Printing the Contents of a 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.

• Items collection allows printing out the actual values from the list.

Page 37: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-37

Aligning Decimal Columns

• It is important to align the decimal points of numeric data.

• Proportional fonts make aligning decimal points tricky.

• Format each number to be printed and measure the length of the formatted string.

• Declare an object as a SizeF Structure which has a Width property.

• Use MeasureString method of the Graphics class to determine the width of a formatted string in pixels.

Page 38: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-38

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)

Page 39: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-39

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

Page 40: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-40

Displaying a Print Preview

• The PrintPreviewDialog component is the key to print preview.

• Add PrintPreviewDialog component to form.• Appears in the Component Tray

• Default name is fine

• Assign in code the same PrintDocument object you are using for printing.

• Execute the ShowDialog method of the PrintPreviewDialog component.

Page 41: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-41

PrintPreviewDialog Component

Page 42: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-42

The Using Block

• System resources such as fonts can be access inside 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.

Page 43: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-43

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.

Page 44: McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. Lists, Loops, and Printing Chapter 7.

McGraw-Hill © 2009 The McGraw-Hill Companies, Inc. All rights reserved. 7-44

Using Static Variables

• Static local variables retain their value for the life of the project.

• Can be useful for• Running totals

• Running counts

• Boolean switches

• Storing current page number/count when printing multiple pages