Top Banner
Chapter 7 Lists, Loops, and Printing Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved. McGraw-Hill
44

Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

May 24, 2018

Download

Documents

trinhlien
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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

Chapter 7

Lists, Loops, and

Printing

Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved. McGraw-Hill

Page 2: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-4

Filling a List — Design Time

Click ellipses button to open

Page 5: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-6

List Boxes and Combo Boxes (2 of2)

Various Styles of List and Combo boxes

Page 7: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-8

Filling a List/Using the Properties Window

• Design time in Properties window • Items property

• Click on ellipses to open String Collection Editor.

• Type list items, end each line with Enter key.

• Run time methods • Items.Add

--OR--

• Items.Insert

Page 9: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-9

Using the Items.Add Method

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

• General Form

• Examples

Object.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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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

• Examples

SchoolsListBox.Items.Insert(0, "Harvard")

MajorsComboBox.Items.Insert(1, MajorsComboBox.Text)

Object.Items.Insert(IndexPosition, ItemValue)

Page 11: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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 (with value 0 to Count – 1) to select an item in list

or (with -1) deselect all items in code.

Page 12: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-12

The Items.Count Property

• to determine number of items in the list

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

Items.Count = 5 AND Highest Index = 4

Page 13: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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

• Examples NamesListBox.Items.RemoveAt(0)

' Remove the item in position IndexInteger.

SchoolsComboBox.Items.RemoveAt(IndexInt

eger)

CoffeeComboBox.Items.RemoveAt(CoffeeCo

mboBox.SelectedIndex)

Object.Items.RemoveAt(IndexPosition)

Page 15: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-17

List Box and Combo Box Events

• In the Editor window, select the control name in the Class Name

list (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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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 (pretest)or the

bottom (posttest) of the loop.

Page 19: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-21

Pretest vs. Posttest Diagram

Page 22: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-25

For/Next Loop Diagram

Page 26: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-30

Setting Up the Print Output

• PrintPage event is fired once for each page to be

printed, and is referred to as a 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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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 Single

Dim VerticalPrintLocationSingle As Single

Page 35: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-35

PrintPageEventArgs

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

–MarginBounds

–PageBounds

–PageSettings

Page 36: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-38

Aligning Decimal Columns

Code 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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-39

Aligning Decimal Columns

Code 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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-41

PrintPreviewDialog Component

Page 42: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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.

Using HeadingFont as New Font("Arial", 14, FontStyle.Bold

e.Graphics.DrawString(“Flavors”, HeadingFont, Brushes.Black,

HorizontalPrintLocationSingle, VerticalPrintlocationSingle)

End Using

Page 43: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

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: Lists, Loops, and Printing - Erie Pennsylvania€¦ · Pretest/Entry test Bottom of Loop Condition, Posttest/ Exit . 7-20 Pretest vs. Posttest ... Generally, the Exit For statement

7-44

Using Static Variables in Printing

• 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