Chapter 9 Files, Printing, and Structure - PowerPoint PPT Presentation

1 / 47
About This Presentation
Title:

Chapter 9 Files, Printing, and Structure

Description:

Chapter 9 Files, Printing, and Structure Topics Using Files The OpenFileDialog, SaveFileDialog, FontDialog, and ColorDialog Controls The PrintDocument Control – PowerPoint PPT presentation

Number of Views:215
Avg rating:3.0/5.0
Slides: 48
Provided by: Xin146
Category:

less

Transcript and Presenter's Notes

Title: Chapter 9 Files, Printing, and Structure


1
  • Chapter 9 Files, Printing, and Structure
  • Topics
  • Using Files
  • The OpenFileDialog, SaveFileDialog, FontDialog,
    and ColorDialog Controls
  • The PrintDocument Control
  • Structures

2
The Life Span of Data
  • Thus far, all of our data has been stored in
    controls and variables existing in RAM
  • This data disappears once the program stops
    running
  • If data is stored in a file on a computer disk,
    it can be retrieved and used at a later time

3
Three Steps in Using a File
  • The file must be opened
  • If it does not yet exist, it will be created
  • Data is read from or written to the file
  • The program closes the file

4
Reading and Writing to a File
  • Data must be retrieved from disk and put in
    memory for an application to work with it
  • Data is transferred from disk to memory by
  • Reading it from an input file
  • Placing it in variables or control properties
  • Data is transferred from memory to disk by
  • Writing it to an output file
  • Getting it from variables or control properties
  • Data is frequently placed in the text property of
    a control

5
File Types/Access Methods
  • Text file type
  • Character based text
  • Contents can be viewed by Notepad
  • Binary file type
  • Pure binary form
  • Contents cannot be viewed with a text editor
  • Access Methods
  • Sequential access a continuous stream of data
    written and read as a whole from beginning to end
  • Random access access in any order with data
    written to or read from specific places in the
    file
  • Like the difference between a cassette tape and a
    CD

6
Creating Files with StreamWriter Objects
  • Add Imports System.IO before class declared
  • Makes StreamWriter classes available in code
  • A StreamWriter object is used to create a
    sequential text file in the following way
  • Declare an object variable of type StreamWriter
  • Dim phoneFile As StreamWriter
  • Call CreateText method passing the filename
  • phoneFile File.CreateText("phonelist.txt")
  • This Method returns a StreamWriter object
  • Object is assigned to a StreamWriter variable
  • Variable phoneFile now defines a stream of data
    that can be written to phonelist.txt

7
Appending Text with StreamWriter
  • A StreamWriter object is used to append data to a
    sequential text file in the following way
  • Declare an object variable of type StreamWriter
  • Dim phoneFile As StreamWriter
  • Call AppendText method passing the filename
  • phoneFile File.AppendText("phonelist.txt")
  • This Method AppendText returns a StreamWriter
    object
  • Object is assigned to a StreamWriter variable
  • Variable phoneFile now defines a stream of data
    that can be added to the end of phonelist.txt

8
File Paths
  • Filename can include the file path
  • Can be a complete file path with drive letter
  • "C\WordProc\memo.txt"
  • Refer to a file in the default drive root
    directory
  • "\pricelist.txt"
  • Or include no path information at all
  • "mytext.txt"
  • If no path information specified, the bin folder
    of the current project is used

9
Writing Data to a File
  • The WriteLine method of a StreamWriter object
    actually writes data to the file
  • ObjectVar.WriteLine(Data)
  • Streamwriter object identified by ObjectVar
  • The methods Data argument consists of constants
    or variables with data to be written
  • WriteLine appends an invisible newline character
    to the end of the data
  • Omit argument to write a blank line to a file
  • ObjectVar.WriteLine()

10
Writing Data to a File Example
Dim studentFile As StreamWriter studentFile
File.CreateText("StudentData.txt") studentFile.Wri
teLine("Jim") studentFile.WriteLine(95) studentFil
e.WriteLine("Karen") studentFile.WriteLine(98) stu
dentFile.WriteLine("Bob") studentFile.WriteLine(82
) studentFile.Close()
The Resulting File, StudentData.txt
Jim 95 Karen 98 Bob 82
11
The StreamWriter Write Method
ObjectVar.Write(Data)
  • The Write method writes an item of data without
    writing a newline character
  • Usually need to provide some sort of delineation
    or delimiter between data items
  • A blank space could be used
  • Comma is a more common delimiter

12
Closing a StreamWriter Object
  • Should close files when finished with them
  • Avoids losing data
  • Data is initially written to a buffer
  • Writes unsaved data from the buffer to the file
  • The Close method of a StreamWriter object clears
    the buffer and closes the file
  • ObjectVar.Close()
  • Streamwriter object identified by ObjectVar
  • Tutorial 9-1 provides an example of an
    application that writes data to a file

13
Appending to a File
  • If opening an existing file with CreateText
  • Existing contents are deleted
  • New text overwrites the old text
  • If opening an existing file with AppendText
  • Existing contents are retained
  • New text adds on to the end of the old text
  • If adding a new friend to friendFile, use

friendFile File.AppendText("MyFriends.txt")
14
Appending a File Example
'Declare an object variable Dim friendFile as
StreamWriter 'Open the file friendFile
File.AppendText("MyFriends.txt") 'Write the
data friendFile.WriteLine("Bill
Johnson") friendFile.WriteLine(30) friendFile.Writ
eLine("36 Oak Street") 'Close the
file friendFile.Close()
friendFile After
Jim Weaver 30 P.O. Box 124 Mary Duncan 24 47 Elm
Street Karen Warren 28 24 Love Lane Bill
Johnson 30 36 Oak Street
Jim Weaver 30 P.O. Box 124 Mary Duncan 24 47 Elm
Street Karen Warren 28 24 Love Lane
friendFile Before
15
StreamReader Objects
  • Use StreamReader objects to read from a file
  • Define and open similar to StreamWriter
  • Sample code
  • Variable phoneFile now defines a stream of data
    that can be read from phonelist.txt
  • Must have Imports System.IO before class
    declaration as was done with StreamWriter

Dim ObjectVar As StreamReader ObjectVar
File.OpenText(Filename)
Dim phoneFile As StreamReader phoneFile
File.OpenText("phonelist.txt")
16
Reading Data from a File
  • The ReadLine method of a StreamReader object
    actually reads data from the file
  • dataVar ObjectVar.ReadLine()
  • Streamwriter object identified by ObjectVar
  • The result of the method, the data read from the
    file, is assigned to string variable dataVar
  • Sample code
  • Dim custFile As StreamReader
  • custFile File.OpenText("customer.txt")
  • custName custFile.ReadLine()
  • custName holds the data read from the file
  • StreamReader also has a Close method

17
Determining Whether a File Exists
  • The File.OpenText method issues a runtime error
    if the file does not exist
  • Avoid this by using the File.Exists method
  • Format is File.Exists(filename)
  • Returns a boolean result that can be tested
  • Tutorial 9-2 shows how to read text file data

If System.IO.File.Exists(filename) Then ' Open
the file. inputFile System.IO.File.OpenText(fil
ename) Else MessageBox.Show(filename " does
not exist.") End If
18
Detecting End of File
  • The Peek method tests if youve reached end of
    file (no more characters to read)
  • Format is objectvar.Peek
  • If no more characters, the value -1 is returned
  • Tutorial 9-3 demonstrates the Peek method

Dim scoresFile As StreamReader Dim strInput As
String scoresFile File.OpenText("Scores.txt") Do
Until scoresFile.Peek() -1 strInput
scoresFile.ReadLine() lstResults.Items.Add(input)
Loop scoresFile.Close()
19
Detecting End of File (Contd)
  • The EndofStream method also tests if youve
    reached end of file (no more characters to read)
  • Format is objectvar.EndOfStream
  • If no more characters, the value True is returned

Dim scoresFile As StreamReader Dim strInput As
String scoresFile File.OpenText("Scores.txt") Do
Until scoresFile.EndOfStream() strInput
scoresFile.ReadLine() lstResults.Items.Add(input)
Loop scoresFile.Close()
20
ReadToEnd Method
  • ReadToEnd method returns the rest of the file
    from the current read position to end of file
  • Functions differently from ReadLine method
  • ReadToEnd method ignores line delimiters
  • The statement input textFile.ReadToEnd reads
    the file contents and stores it in strInput

Dim textFile As StreamReader Dim strInput As
String textFile File.OpenText("names.txt") strIn
put textFile.ReadToEnd textFile.Close()
21
Write Then Read Entire Array
Dim intValues(9) As Integer ----------------------
-------------------------- Dim outputFile as
StreamWriter outputFile File.CreateText("values.
txt") For intCount 0 To intValues.Length
1 outputFile.WriteLine(intValues(intCount)) Next
outputFile.Close() -------------------------------
----------------- Dim inputFile as
StreamReader inputFile File.OpenText("values.txt
") For intCount 0 To intValues.Length
1 intValues(intCount) CInt(inputFile.ReadLine)
Next inputFile.Close()
22
OpenFileDialog and SaveFileDialog
  • Windows has a standard method of allowing a user
    to choose a file to open or save
  • These methods let users browse for a file
  • The OpenFileDialog and SaveFileDialog controls
    provide this capability in VB
  • To use the OpenFileDialog control
  • Double click on this tool in the Toolbox
  • Appears in component tray
  • Use ofd as standard prefix when naming
  • SaveFileDialog is used in a similar way

23
Displaying an Open Dialog Box
  • Display control with the ShowDialog method
  • ControlName.ShowDialog()
  • Method returns a value indicating which dialog
    box button the user selects, either
  • DialogResult.OK, or
  • DialogResult.Cancel
  • For example

If ofdOpenfile.Showdialog() DialogResult.OK
Then MessageBox.Show(ofdOpenFile.FileName) Else
MessageBox.Show("You selected no file") End If
24
Dialog Box Filter Property
  • FileDialog controls have a Filter property
  • Limits files shown to specific file extensions
  • Specify filter description shown to user first
  • Then specify the filter itself
  • Pipe symbol () used as a delimiter
  • Following Filter property lets user choose
  • Text files (.txt), displays all .txt files
  • All files (.), displays all file extensions

ofdOpenFile.Filter "Text files (.txt).txt"
_ "All files (.)."
25
Open Dialog Box Example
  • InitialDirectory property
  • Title property
  • Filter property

26
SaveFileDialog Control
  • SaveFileDialog uses the same methods
  • ShowDialog()
  • The same properties
  • Filter
  • InitialDirectory
  • Title
  • Filename
  • And the same result constants
  • DialogResult.OK
  • DialogResult.Cancel
  • Tutorial 9-4 uses these controls in a text editor

27
ColorDialog Control
  • Displays a typical Windows color dialog box
  • Provides users the ability to choose a color

28
ColorDialog Control
  • To use the ColorDialog control
  • Double click the tool in the Toolbox
  • Appears in component tray
  • Use cd as standard prefix when naming
  • The following code sets the text in control
    lblMessage to the color selected by the user

cdColor.ShowDialog() If cdColor.ShowDialog()
DialogResult.OK Then lblMessage.ForeColor
cdColor.Color End If
29
FontDialog Control
  • Displays a Windows font selection dialog box
  • Allows users to choose font, font size, etc.

30
FontDialog Control
  • To use the FontDialog control
  • Double click the tool in the Toolbox
  • Appears in component tray
  • Use fd as standard prefix when naming
  • The following code sets the text in control
    lblMessage to the font selected by the user

fdFont.ShowDialog() If fdFont.ShowDialog()
DialogResult.OK Then lblMessage.Font
fdFont.Font End If
31
PrintDocument Control
  • Allows you to send output to the printer
  • To use the PrintDocument control
  • Double click the tool in the Toolbox
  • Appears in component tray
  • Use pd as standard prefix when naming
  • PrintDocument control has a Print method
  • This method starts the printing process
  • Format is
  • PrintDocumentControl.Print()
  • This triggers a PrintPage event

32
PrintPage Event Handler
  • The code in the PrintPage event handler performs
    the actual printing
  • Double click PrintDocument control in tray
  • This creates the PrintPage event handler
  • Insert your print code inside the event handler
  • Basic format of event handler shown below

Private Sub pdPrint_PrintPage(ByVal sender As
System.Object, _ ByVal e As System.Drawing.Printi
ng.PrintPageEventArgs) _ Handles
pdPrint.PrintPage 'Your print code inserted
here End Sub
33
DrawString Method
  • The DrawString method is used inside the
    PrintPage event to
  • Specify data to send to the printer in string
  • Set font, font size, and font style
  • Determine horizontal position (HPos) of text
  • Determine vertical position (VPos) of text
  • Brushes.Black specifies output in black
  • DrawString method is formatted as follows

e.Graphics.DrawString(String, _ New
Font(FontName, Size, Style), _ Brushes.Black,
HPos, VPos)
34
Specifying Fonts, Sizes, Styles
  • Fonts are specified with the string which names
    the font to be used
  • "Times New Roman"
  • Arial" , etc.
  • Sizes are specified with a number
  • 10, 12, etc.
  • Print effects are specified with provided
    constants
  • FontStyle.Regular
  • FontStyle.Bold
  • FontStyle.Underline

35
Sample PrintPage Event Procedure
Private Sub pdPrint_PrintPage(ByVal sender As
System.Object, _ ByVal e As System.Drawing.Printi
ng.PrintPageEventArgs) _ Handles
pdPrint.PrintPage Dim inputFile As
StreamReader Dim intX As Integer
10 'Horizontal Position Dim intY As Integer
10 'Vertical Position inputFile
File.OpenText(strFilename) Do While
inputFile.Peek ltgt -1 e.Graphics.DrawString(inputF
ile.ReadLine, _ New Font("Courier", 10,
FontStyle.Regular), _ Brushes.Black, intX,
intY) intY 12 'Increment Vert
Pos Loop inputFile.Close() End Sub
  • Tutorial 9-5 adds a print feature to Tutorial 9-4

36
Printing Column Based Reports
  • Business reports typically contain a
  • Report header printed at the top of the page
  • Report body with the data, usually in columns
  • Optional footer, often totalling certain columns
  • Report header usually has column headings
  • Monospaced font used for column reports
  • Each character takes same amount of space
  • This allows columns to be aligned
  • String.Format used to align data along column
    boundaries

37
String.Format Example
String.Format("0, 71, -102, 7", 50, "Arg1",
6)
Argument 0
Specifies the argument number
Argument 1
Argument 2
Specifies field width for arg negative - left
justified positive - right justified
Results in the following output
50Arg 1 6
7 spaces
10 spaces Left Justified
7 spaces
38
Other OpenFileDialog Properties
  • InitialDirectory property specifies folder to use
  • Default if not specified is the current folder
  • To set dialog box initial directory to C\Data
  • ofdOpenFile.InitialDirectory "C\Data"
  • Title property specifies the text on the title
    bar
  • Default title is Open if not specified
  • ofdOpenFile.Title "Select a File to Open"
  • Filename property returns file selected from
    dialog box by user, in this case to selectedFile
  • selectedFile ofdOpenFile.Filename

39
Open Dialog Box Example
  • User may choose to display .txt files or all
    files
  • Files from Data folder of hard drive are shown
  • Dialog box title shows Select a File to Open
  • Variable inputFile holds file selected by user

' Configure the Open dialog box and display
it. With ofdOpenFile .Filter "Text files
(.txt).txt" _ "All files
(.)." .InitialDirectory "C\Data" .Title
"Select a File to Open" If .ShowDialog()
DialogResult.OK Then inputFile
System.IO.File.OpenText(.Filename) End If End
With
40
Structures A Visual Basic programmer may also
create new data types, called user-defined data
types (UDT). Two kinds of UDTs structure and
class. This chapter discusses the use of
structure and Chapter 12 the use of class.
41
Structures vs. Arrays
  • Arrays
  • Multiple fields in one array
  • All of the same data type
  • Distinguished by a numerical index
  • Structures
  • Multiple fields in one structure
  • Can be of differing data types
  • Distinguished by a field name

42
Syntax for Declaring a Structure
AccessSpecifier Structure StructureName FieldDe
clarations End Structure
  • StructureName is a name that identifies the
    structure itself
  • FieldDeclarations are the declarations of the
    individual fields within the structure

43
Structure Declaration Example
  • Following declares a structure with six fields
    intended to record employee payroll data
  • Structure name is EmpPayData

Structure EmpPayData Dim intEmpNumber As
Integer Dim strFirstName As String Dim
strLastName As String Dim sngHours As
Single Dim decPayRate As Decimal Dim
decGrossPay As Decimal End Structure
44
Creating and Initializing a Structure
  • Using the EmpPayData structure just defined
  • Define variable deptHead of type EmpPayData
  • deptHead contains the six fields in the structure
  • Access each field using varName.fieldName

Dim deptHead As EmpPayData deptHead.intEmpNumber
1101 deptHead.strFirstName "Joanne" deptHead.s
trLastName "Smith" deptHead.sngHours
40 deptHead.decPayRate 25 deptHead.decGrossPay
CDec(deptHead.sngHours) _ deptHead.decPayR
ate
45
Passing Structure Variables to Procedures and
Functions
  • Structures can be passed to procedures and
    functions like any other variable
  • The data type to use in the specification is the
    name of the structure

Sub CalcPay(ByRef employee As EmpPaydata) ' This
procedure accepts an EmpPayData variable ' as
its argument. The employees gross pay ' is
calculated and stored in the grossPay '
field. With employee .decGrossPay .sngHours
.decPayRate End With End Sub
46
Structures Containing Arrays
  • Structures can contain dynamic arrays
  • Must ReDim after declaring structure variable

Structure StudentRecord Dim strName As
String Dim sngTestScores() As Single End
Structure Dim student As StudentRecord ReDim
student.sngTestScores(4) student.strName "Mary
McBride" student.sngTestScores(0)
89 Student.sngTestScores(1) 92 Student.sngTestSc
ores(2) 84 Student.sngTestScores(3)
96 Student.sngTestScores(4) 91
47
Arrays Containing Structures
  • Can declare an array of structures
  • Example below declares employees as an array of
    type EmpPayData with 10 elements
  • Can refer to each field using the format
  • arrayName(index).fieldName
  • Tutorial 9-6 examines an application with a
    structure

Dim employees(9) As EmpPayData ' Refer to the
empNumber of the first employee employees(0).empNu
mber 1101
Write a Comment
User Comments (0)
About PowerShow.com