![]() |
Setting Up and Previewing Printing |
|
The Page Setup Dialog Box |
|
Introduction |
|
As opposed to directly printing a file, a user may want to perform some preliminary preparation on the document or the printer. Microsoft Windows provides another dialog box used to control printing. It is called Page Setup: ![]()
To provide a Page Setup to your application, you can use the PageSetupDialog
button |
When using the Page Setup dialog box, the user must first select a printer. This is usually done already by the operating system that selects the default printer of the computer that called this dialog box. Otherwise, to select a printer or to change the printer, the user can click the Printer button and select or change it using the Name combo box: ![]() Displaying the Page Setup Printer dialog box also allows you and/or the user to customize the printing process if necessary. If you want to do this, you can use the PageSetupDialog.PrinterSettings property which is a value of the PrinterSettings class reviewed earlier. After selecting the printer, the user can click OK. The options of the Page Setup dialog box depend on the driver of the printer selected in the Name combo box. The Page Setup dialog box allows the user to customize the appearance of the paper on which the document would be printed. On the Page Setup, the user can click the arrow of the Size combo box and select one of the configured sizes of paper. The characteristics of the paper are controlled by the PageSettings class that we mentioned earlier. For example, if the printer has many trays, as indicated by the driver of the selected printer, the user can select which tray would be used when printing. As it happens, one printer can have only one tray while another printer can have 3, 5, or more trays. If the desired printer is on a network, the user can click the Network button to locate it. To programmatically show or hide the Network button, specify a false or true result to the PageSetupDialog.ShowNetwork Boolean property. The user also has the option to print the document in Portrait (vertical) or in Landscape (horizontal) position. The option to allow the user to select Portrait or Landscape is controlled by the AllowOrientation Boolean property.
If you use the printing process that solely involves the print dialog box, you may send a document to the printer without knowing what the printed document would look like on the piece of paper. In the same way, the user would have to simply accept the way you designed the printed document to appear. One way you can assist the user consists of displaying a preview of what the printed sheet would look like. This is the idea behind the concept of print preview. Print preview consists of displaying, on the computer monitor, a sample representation of what the document would look like once printed.
Print preview is primarily a technique of drawing a
sample printed sheet on a form. It is implemented by the
PrintPreviewDialog button In the .NET Framework, print preview is implemented through the PrintPreviewDialog class. This class is derived from the Form class. Based on this, to programmatically create a print preview, you can start by declaring a variable of type PrintPreviewDialog. Here is an example: Imports System.Drawing
Imports System.Windows.Forms
Module Exercise
Public Class Starter
Inherits Form
Friend WithEvents PrintPreviewer As Button
Dim components As System.ComponentModel.Container
Public Sub New()
InitializeComponent()
End Sub
Public Sub InitializeComponent()
PrintPreviewer = New Button
PrintPreviewer.Location = New Point(12, 12)
PrintPreviewer.Text = "&Print Preview..."
PrintPreviewer.Width = 100
Controls.Add(PrintPreviewer)
End Sub
Private Sub PrintPreviewerClicked(ByVal sender As Object, _
ByVal e As EventArgs) _
Handles PrintPreview.Click
Dim Previewer As PrintPreviewDialog = New PrintPreviewDialog
End Sub
End Class
Function Main() As Integer
Dim frmStart As Starter = New Starter
Application.Run(frmStart)
Return 0
End Function
End Module
As a dialog-based object, to display the print preview, the PrintPreviewDialog class inherits the ShowDialog() method from its parent the Form class. Here is an example: Private Sub PrintPreviewerClicked(ByVal sender As Object, _
ByVal e As EventArgs) _
Handles PrintPreview.Click
Dim Previewer As PrintPreviewDialog = New PrintPreviewDialog
Previewer.ShowDialog()
End Sub
This would produce:
The Print Preview window appears as a finished designed form with a toolbar, a preview area, and two scroll bars. The preview area shows a sample of what a printed sheet would look like. If the dialog box is not "aware" of what would be printed, it displays the "Document does not contain any pages" string. This means that, in order to display something, you must create and design it. To make this possible, the PrintPreviewDialog class is equipped with a property named Document. The PrintPreviewDialog.Document property is of type PrintDocument. Therefore, in order to design a sample sheet, you should have created and configured a PrintDocument object. Here is an example: Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Printing
Module Exercise
Public Class Starter
Inherits Form
Friend WithEvents PrintPreview As Button
Private Previewer As PrintPreviewDialog
Private DocumentToPrint As PrintDocument
Dim components As System.ComponentModel.Container
Public Sub New()
InitializeComponent()
End Sub
Public Sub InitializeComponent()
PrintPreview = New Button
PrintPreview.Location = New Point(12, 12)
PrintPreview.Text = "&Print Preview..."
PrintPreview.Width = 100
Controls.Add(PrintPreview)
Previewer = New PrintPreviewDialog()
DocumentToPrint = New PrintDocument()
Previewer.Document = DocumentToPrint
End Sub
Private Sub PrintPreviewClicked(ByVal sender As Object, _
ByVal e As EventArgs) _
Handles PrintPreview.Click
Previewer.ShowDialog()
End Sub
End Class
Function Main() As Integer
Dim frmStart As Starter = New Starter
Application.Run(frmStart)
Return 0
End Function
End Module
This would produce:
As you can see, simply assigning a PrintDocument object to a print preview form only creates a blank sheet. In order to show a preview, you must design it. To make this possible, the PrintDocument class To assist you with actually designing what you want to display in the preview area, the PrintDocument class fires an event named PrintPage. This event is of type PrintPageEventArgs. The PrintPageEventArgs class is equipped with a property named Graphics, which is of type Graphics. You can then use your knowledge of the Graphics class to create or design the preview. Here is an example: Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Printing
Module Exercise
Public Class Starter
Inherits Form
Friend WithEvents PrintPreview As Button
Private Previewer As PrintPreviewDialog
Friend WithEvents DocumentToPrint As PrintDocument
Dim components As System.ComponentModel.Container
Public Sub New()
InitializeComponent()
End Sub
Public Sub InitializeComponent()
PrintPreview = New Button
PrintPreview.Location = New Point(12, 12)
PrintPreview.Text = "&Print Preview..."
PrintPreview.Width = 100
Controls.Add(PrintPreview)
Previewer = New PrintPreviewDialog()
DocumentToPrint = New PrintDocument()
Previewer.Document = DocumentToPrint
End Sub
Private Sub PrintPreviewClicked(ByVal sender As Object, _
ByVal e As EventArgs) _
Handles PrintPreview.Click
Previewer.ShowDialog()
End Sub
Private Sub DrawDocument(ByVal sender As Object, _
ByVal e As PrintPageEventArgs) _
Handles DocumentToPrint.PrintPage
Dim imgPerson As Image = Image.FromFile("E:\Programs\persons1.gif")
e.Graphics.DrawImage(imgPerson, 10, 10)
End Sub
End Class
Function Main() As Integer
Dim frmStart As Starter = New Starter
Application.Run(frmStart)
Return 0
End Function
End Module
On our computer, this produced:
To print the contents of the preview area, the user
can click the Print button
By default, when the print preview window appears to the user, it assumes some default dimensions that may make it small. Because it is derived from the Form class, you can maximize it if you want. Here is an example: Private Sub PrintPreviewClicked(ByVal sender As Object, _
ByVal e As EventArgs) _
Handles PrintPreview.Click
Previewer.WindowState = FormWindowState.Maximized
Previewer.ShowDialog()
End Sub
If the print preview is not maximized, the content of the preview area may appear (too) small for the user, especially if it is made of text. To enlarge it, the user has two alternatives. If the user maximizes the window, the preview area would also be enlarged and the content would be easier to see. As an alternative, the user can click the arrow of the Zoom button. This would display a list of the zoom rates:
The user can then click one of the values.
So far, we were assuming that the user was printing a one-page document. With some files, the document may span more than one page. By default, when the print preview comes up, the preview are would display only one page. The user has the choice of displaying two or more pages at a time, even to specify some arrangement of these pages. To support this, the toolbar of the print preview is equipped with various buttons labeled One Page, Two Pages, Three Pages, Four Pages, and Six Pages. After using the print preview, the user can close it. |
|
|
||
| Previous | Copyright © 2008 Yevol | Next |
|
|
||