Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 16 Drucken
Pfeil 16.1 Überblick
Pfeil 16.1.1 PrintDocument
Pfeil 16.1.2 PrinterSettings
Pfeil 16.1.3 PageSettings
Pfeil 16.2 Einen Druckauftrag erteilen
Pfeil 16.2.1 Methoden und Eigenschaften von PrintDocument
Pfeil 16.2.2 Die Ereignisse in PrintDocument
Pfeil 16.2.3 Die Ereignisse BeginPrint und EndPrint
Pfeil 16.2.4 Das Ereignis QueryPageSettings
Pfeil 16.2.5 Das Ereignis PrintPage
Pfeil 16.2.6 Beenden des Druckauftrags
Pfeil 16.2.7 WYSIWYG
Pfeil 16.3 Seiteneinstellungen mit PageSettings
Pfeil 16.4 Der Drucker als PrinterSettings
Pfeil 16.4.1 Mehrere installierte Drucker
Pfeil 16.4.2 Eigenschaften von PrinterSettings
Pfeil 16.5 Steuerelemente zum Drucken
Pfeil 16.5.1 PrintDocument
Pfeil 16.5.2 PrintDialog
Pfeil 16.5.3 PageSetupDialog
Pfeil 16.5.4 PrintPreviewDialog
Pfeil 16.5.5 PrintPreviewControl
Pfeil 16.6 Drucken von Grafiken
Pfeil 16.6.1 Das Problem der Maßeinheiten
Pfeil 16.6.2 Festlegung der Einheiten und Skalierung
Pfeil 16.6.3 Größenrichtige Ausgabe einer Grafik
Pfeil 16.7 Mehrseitiger Text


Rheinwerk Computing - Zum Seitenanfang

16.5 Steuerelemente zum Drucken Zur nächsten ÜberschriftZur vorigen Überschrift

Mit PrintDocument, PageSettings und PrinterSettings kennen Sie nun die wichtigsten Klassen, die im Zusammenhang mit dem Drucken stehen. Darüber hinaus bietet die Toolbox von Visual Studio fünf Steuerelemente an, die uns mit ihren Fähigkeiten die Programmierung teilweise erheblich erleichtern. Ich möchte Ihnen diese Controls nun vorstellen.


Rheinwerk Computing - Zum Seitenanfang

16.5.1 PrintDocument Zur nächsten ÜberschriftZur vorigen Überschrift

Dieses Steuerelement, das einen Druckjob wie weiter oben beschrieben kapselt, gehört zu der Gruppe der Steuerelemente, die zur Laufzeit nicht sichtbar sind und deshalb im Komponentenfach einer Form abgelegt werden. Im Eigenschaftsfenster können Sie nur die Eigenschaft DocumentName einstellen, der in Meldungsfenstern und der Druckerwarteschlange verwendet wird.


Rheinwerk Computing - Zum Seitenanfang

16.5.2 PrintDialog Zur nächsten ÜberschriftZur vorigen Überschrift

PrintDialog gehört zu der Gruppe der Standarddialoge. Im Kapitel über die Steuerelemente haben wir uns schon mit den Dialogen OpenFileDialog, SaveFileDialog usw. auseinandergesetzt. PrintDialog ist das letzte zu dieser Gruppe gehörende Steuerelement. Es ist aus der Klasse System.Windows.Forms.CommonDialog abgeleitet. Es ermöglicht dem Anwender die Auswahl eines Druckers und die Festlegung der Anzahl der Ausdrucke sowie des Druckbereichs (siehe Abbildung 16.2).

Abbildung 16.2 Das Dialogfenster PrintDialog

Der Dialog wird aufgerufen, um einen Druckjob zu starten. Deshalb muss dessen Eigenschaft Document auf den durch das PrintDocument-Objekt beschriebenen Druckauftrag verweisen. Das können Sie sowohl im Programmcode als auch im Eigenschaftsfenster einstellen. Vergessen Sie die Zuweisung, wird eine Ausnahme ausgelöst, weil der Dialog zu seiner Anzeige die Angabe eines Druckers benötigt, der aus der PrinterSettings-Eigenschaft des PrintDocument-Objekts bezogen wird.

Im Eigenschaftsfenster werden neben Document noch weitere Eigenschaftseinstellungen ermöglicht, die in Tabelle 16.8 zusammengefasst sind (PrinterSettings nur im Code oder implizit durch Document).


Tabelle 16.8 Eigenschaften von »PrintDialog«

Eigenschaft Beschreibung

AllowCurrentPage

Gibt an, ob die Auswahloption Aktuelle Seite angeboten wird.

AllowPrintToFile

Gibt an, ob das Auswahlkästchen zum Ausdruck in eine Datei angeboten wird.

AllowSelection

Gibt an, ob das Optionsfeld Seiten von ... bis angeboten wird.

AllowSomePages

Gibt an, ob das Optionsfeld Seiten angeboten wird.

Document

Der Druckjob, der die Druckereinstellungen liefert

PrinterSettings

Durch den Dialog zu modifizierender Druckjob

PrintToFile

Gibt an, ob das Auswahlkästchen zum Ausdruck in eine Datei selektiert ist.

ShowHelp

Gibt an, ob eine Hilfsschaltfläche angezeigt wird. Wenn ja, muss das Ereignis HelpRequest behandelt werden.

ShowNetwork

Gibt an, ob eine Schaltfläche Netzwerk angezeigt wird.

UseEXDialog

Gibt an, ob das Dialogfenster im Stil von Windows XP angezeigt werden soll.


Wir wollen uns das Zusammenspiel des PrintDocument- und des PrintDialog-Objekts nun an einem Codefragment ansehen. Die Methode sei der Ereignishandler des Drucken-Menüpunkts. Aufgerufen wird der Dialog mit der Methode ShowDialog. Bekanntermaßen liefert diese Methode einen Rückgabewert aus der Enumeration DialogResult. Dieser entscheidet darüber, ob der Anwender die vorgenommenen Einstellungen übernommen haben möchte oder nicht.

Private Sub drucken_Click(sender As Object, e As EventArgs e) 
  printDialog1.Document = printDocument1 
  if printDialog1.ShowDialog() = DialogResult.OK Then _ 
    printDocument1.Print() 
End Sub

Rheinwerk Computing - Zum Seitenanfang

16.5.3 PageSetupDialog Zur nächsten ÜberschriftZur vorigen Überschrift

Das in Abbildung 16.3 gezeigte PageSetupDialog-Steuerelement erlaubt die Festlegung der Seitenränder, die Angabe des Papierformats und der Papierquelle sowie die Ausrichtung im Hoch- bzw. Querformat. Dieser Dialog wird üblicherweise über den Menüpunkt Seite einrichten angezeigt.

Abbildung 16.3 Das Dialogfenster »PageSetupDialog«

PageSetupDialog bezieht Einstellungen des PageSettings- und PrinterSettings-Objekts aus dem PrintDocument-Objekt, das ebenfalls der Eigenschaft Document übergeben werden muss. Neben dieser Eigenschaft werden weitere im Eigenschaftsfenster angezeigt (siehe Tabelle 16.9) und beeinflussen die Anzeige (PageSettings und PrinterSettings nur im Code oder implizit durch Document).


Tabelle 16.9 Eigenschaften von »PageSetupDialog«

Eigenschaft Beschreibung

AllowMargins

Gibt an, ob die Seitenränder geändert werden können.

AllowOrientation

Gibt an, ob die Optionen Hoch- oder Querformat angeboten werden.

AllowPaper

Gibt an, ob die Papiereinstellungen (Größe und Zufuhr) angeboten werden.

AllowPrinter

Gibt an, ob die Druckerschaltfläche aktiviert ist.

Document

Der Druckjob, der die Druckereinstellungen liefert

EnableMetric

Gibt an, ob in Millimeter angezeigte Randeinstellungen automatisch in oder aus 1/100 Zoll konvertiert werden sollen.

MinMargins

Die von den Benutzern auswählbare minimale Randbreite im aktuell eingestellten Maßsystem

PageSettings

Durch den Dialog zu modifizierende Seiteneinstellungen

PrinterSettings

Durch den Dialog zu modifizierender Druckjob

ShowHelp

Gibt an, ob eine Hilfsschaltfläche angezeigt wird. Wenn ja, muss das Ereignis HelpRequest behandelt werden.

ShowNetwork

Gibt an, ob eine Schaltfläche Netzwerk angezeigt wird.


Einstellungen im Dialog ändern das PageSettings-Objekt. Eine Kleinigkeit ist bei den Seitenrändern zu beachten. Damit die in DefaultPageSettings eingestellten Ränder richtig in den Dialog übernommen werden, muss EnableMetric den Wert True haben. Jedoch ist dies nur notwendig, wenn die Ländereinstellungen unter Windows einem metrischen System entsprechen. Im Gegensatz zu früheren .NET-Versionen werden die Werte aus dem Dialog unabhängig von dieser Einstellung richtig übernommen (dort musste mit PrinterUnitConvert.Convert(<Margins>, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter) konvertiert werden). Bitte beachten Sie, dass die Ränder vor der Zuweisung an die Margins-Eigenschaft im DefaultPageSettings-Objekt immer in die Einheit 1/100 Zoll konvertiert werden. Dies müssen Sie insbesondere berücksichtigen, wenn Sie der Eigenschaft PageUnit des Graphics-Objects eine andere Einheit zuweisen, da die Werte von Margins in dieser Einheit gemessen werden.


Rheinwerk Computing - Zum Seitenanfang

16.5.4 PrintPreviewDialog Zur nächsten ÜberschriftZur vorigen Überschrift

Mit dem PrintPreviewDialog-Steuerelement bieten Sie eine Druckvorschau an. Der Anwender kann im Fenster die Größe der Vorschau in vorgegebenen Stufen wählen. Bei einem mehrseitigen Druckjob ist die Anzeige von gleichzeitig bis zu sechs Druckseiten möglich.

Die Programmierung ist sehr einfach und der anderer Steuerelemente ähnlich. Voraussetzung ist, dass Sie das Steuerelement mit dem PrintDocument-Objekt in der Eigenschaft Document verbinden, damit es sich mit den notwendigen Informationen versorgen kann. Setzen Sie die Eigenschaft UseAntiAlias auf True, werden Schriften geglättet – was allerdings gleichzeitig auch mit einer Verschlechterung der Performance verbunden ist.

Das in Abbildung 16.4 gezeigte Fenster weist eine Schaltfläche mit einem Druckersymbol auf. Die Schaltfläche entspricht der OK-Schaltfläche anderer Dialoge. Damit das Dokument ausgedruckt wird, muss der Rückgabewert der Methode ShowDialog ausgewertet werden:

Private Sub mnuDruckvorschau_Click(sender As Object, e As EventArgs) 
  printPreviewDialog1.Document = printDocument1 
  if printPreviewDialog1.ShowDialog() = DialogResult.OK Then _ 
    printDocument1.Print() 
End Sub

Abbildung 16.4 Das Dialogfenster »PrintPreviewDialog«


Rheinwerk Computing - Zum Seitenanfang

16.5.5 PrintPreviewControl topZur vorigen Überschrift

Während das Steuerelement PrintPreviewDialog im Komponentenfach abgelegt wird, weil es nicht in der Form angezeigt wird, ist das Steuerelement PrintPreviewControl zur Laufzeit der Anwendung für den Anwender sichtbar und zeigt den Bereich der Seitenvorschau an. Da es von Control abgeleitet ist, erbt es all dessen Möglichkeiten. Der Vorteil gegenüber PrintPreviewDialog ist die viel weiter gehende Kontrolle über die Seiten- bzw. Druckvorschau. Nur die sieben in Tabelle 16.10 gezeigten spezifischen Eigenschaften sind nötig, um die Druckvorschau zu steuern.


Tabelle 16.10 Eigenschaften von »PrintPreviewControl«

Eigenschaft Beschreibung

AutoZoom

Gibt an, ob die Dokumentvorschau auf den verfügbaren Bereich skaliert wird.

Columns

Bei mehrseitigen Druckjobs: die Anzahl nebeneinander gezeigter Seiten

Document

Gibt an, welcher Druckjob (PrintDocument) die Druckinformationen liefert.

Rows

Bei mehrseitigen Druckjobs: die Anzahl untereinander gezeigter Seiten

StartPage

Bei mehrseitigen Druckjobs: die Nummer der ersten anzuzeigenden Seite

UseAntiAlias

Schriften werden geglättet: bessere Anzeige bei schlechterer Performance.

Zoom

Steuert die Verkleinerung/Vergrößerung des angezeigten Dokuments.


Die wichtigste ist die schon bekannte Eigenschaft Document, denn ohne einen Druckjob kann das PrintPreviewControl nichts anzeigen. Ein Dokument kann aus mehr als einer Seite bestehen. Diesem Thema werden wir uns später noch widmen. Wenn mehrere Dokumentseiten im Ansichtsbereich angezeigt werden sollen, müssen Sie in den Eigenschaften Rows und Columns angeben, wie viele Reihen und Spalten gleichzeitig dargestellt werden sollen. Standardmäßig sind beide Eigenschaften auf den Wert 1 eingestellt.

Mit der Eigenschaft Zoom kann die Darstellung einer Seite verkleinert oder vergrößert werden. Die volle Größe eines Dokuments entspricht dem Wert 1.0, der Standardwert ist 0,3. Eine Veränderung des Wertes von Zoom bewirkt, dass die Eigenschaft AutoZoom auf False gesetzt wird. Ist diese Eigenschaft True, wird die Seitenvorschau des Dokuments so angepasst, dass es noch im Anzeigebereich des Steuerelements dargestellt werden kann.

Die Eigenschaft StartPage gibt bei mehreren anzuzeigenden Seiten die Nummer der ersten Seite an. Dabei steht 0 für die erste Seite. UseAntiAlias dient wie schon beim PrintPreview-Dialog zum Glätten von Schriften.

Beispiel »Eigene Vorschau«

Einen eigenen Dialog zur Seitenvorschau zu programmieren, erfordert nicht besonders viel Programmcode und reduziert sich auf einige wenige Zeilen Programmcode, wie im folgenden Beispiel zu sehen ist. Abbildung 16.5 zeigt das Hauptfenster und Abbildung 16.6 die Druckvorschau.


'...\Drucken\Eigenschaften\Vorschau.vb

Imports System.Drawing.Printing 
Public Class Vorschau 
  Private Sub DrawGraphic(g As Graphics, _ 
              x1 As Int32, y1 As Int32, x2 As Int32, y2 As Int32) 
    Dim p As New Pen(Color.Black) 
    For i As Integer = x1 To x2 Step 20 : g.DrawLine(p, x1, y1, i, y2) : Next 
    For i As Integer = x2 To x1 Step –20 : g.DrawLine(p, x2, y1, i, y2) : Next 
  End Sub

  Private Sub Linien(sender As Object, e As PaintEventArgs) Handles Me.Paint 
    Me.DrawGraphic(e.Graphics, 0, Hauptmenü.Height, _ 
                   ClientSize.Width, ClientSize.Height) 
  End Sub

  Private WithEvents doc As New PrintDocument() 
  Private Sub Druck(sender As Object, e As PrintPageEventArgs) _ 
  Handles doc.PrintPage 
    Dim m As Rectangle = e.MarginBounds 
    Me.DrawGraphic(e.Graphics, m.X, m.Y, m.Width + m.X, m.Height + m.Y) 
  End Sub

  Private Sub Druck(sender As Object, e As EventArgs) Handles Drucken.Click 
    Dim d As New PrintDialog() : d.Document = doc 
    If d.ShowDialog() = DialogResult.OK Then doc.Print() 
  End Sub

  Private Sub Seite(sender As Object, e As EventArgs) Handles Einrichten.Click 
    Dim d As New PageSetupDialog() : d.Document = doc : d.EnableMetric = True 
    d.ShowDialog() 
  End Sub

  Private Sub Ansicht(sender As Object, ByVal e As EventArgs) _ 
  Handles Seitenansicht.Click 
    Dim d As New PrintPreviewDialog() : d.Document = doc 
    If d.ShowDialog() = DialogResult.OK Then doc.Print() 
  End Sub

  Private Sub Selbst(sender As Object, e As EventArgs) _ 
  Handles Druckvorschau.Click 
    Dim frm As New EigeneVorschau() 
    frm.VorschauControl.Document = doc 
    frm.ShowDialog() 
  End Sub 
End Class

Abbildung 16.5 Das Hauptfenster des Beispiels »Eigene Vorschau«


'...\Drucken\Eigenschaften\EigeneVorschau.vb

Public Class EigeneVorschau 
  Private Sub Groß(sender As Object, e As EventArgs) Handles Größer.Click 
    Try : VorschauControl.Zoom += 0.05 : Catch : End Try 
  End Sub

  Private Sub Klein(sender As Object, e As EventArgs) Handles Kleiner.Click 
    Try : VorschauControl.Zoom -= 0.05 : Catch : End Try 
  End Sub

  Private Sub Passend(sender As Object, e As EventArgs) _ 
  Handles Automatisch.Click 
    VorschauControl.AutoZoom = True 
  End Sub 
End Class

Abbildung 16.6 Der Dialog des Beispiels »EigeneVorschau«



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual Basic 2008
Visual Basic 2008
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern