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

Inhaltsverzeichnis
Über den Autor
Vorwort zur 4. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign und Vererbung
4 Weitere .NET-Datentypen
5 Weitere Möglichkeiten von C#
6 Projektmanagement und Visual Studio 2008
7 Fehlerbehandlung und Debugging
8 LINQ
9 Multithreading und asynchrone Methodenaufrufe
10 Arbeiten mit Dateien und Streams
11 Serialisierung
12 Einige wichtige .NET-Klassen
13 Grundlagen zum Erstellen einer Windows-Anwendung
14 Die wichtigsten Steuerelemente
15 Tastatur- und Mausereignisse
16 MDI-Anwendungen
17 Grafische Programmierung mit GDI+
18 Das Drucken (Printing)
19 Steuerelemente entwickeln
20 Programmiertechniken
21 WPF – die Grundlagen
22 Die Layoutcontainer
23 Die WPF-Controls
24 Konzepte von WPF
25 ADO.NET – die Verbindung zu einer Datenbank herstellen
26 Die Datenbankabfrage
27 Der SqlDataAdapter
28 Daten im lokalen Speicher – das DataSet
29 Eine Datenbank aktualisieren
30 Stark typisierte DataSets
31 Weitergabe von Anwendungen
Stichwort

Download:
- ZIP, ca. 13,6 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2008 von Andreas Kuehnel
Das umfassende Handbuch
Buch: Visual C# 2008

Visual C# 2008
geb., mit DVD
1.366 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1172-7
Pfeil 18 Das Drucken (Printing)
Pfeil 18.1 Ein einführender Überblick
Pfeil 18.2 Einen Druckauftrag erteilen
Pfeil 18.2.1 Methoden und Eigenschaften von »PrintDocument«
Pfeil 18.2.2 Die Ereignisse eines »PrintDocument«-Objekts
Pfeil 18.2.3 Die Ereignisse »BeginPrint« und »EndPrint«
Pfeil 18.2.4 Das Ereignis »QueryPageSettings«
Pfeil 18.2.5 Das Ereignis »PrintPage«
Pfeil 18.2.6 Den Druckauftrag beenden
Pfeil 18.2.7 Programmbeispiel
Pfeil 18.3 Seiteneinstellungen mit »PageSettings«
Pfeil 18.4 Der Drucker als »PrinterSettings«-Objekt
Pfeil 18.4.1 Mehrere installierte Drucker
Pfeil 18.4.2 Wichtige Eigenschaften des »PrinterSettings«-Objekts
Pfeil 18.5 Die Steuerelemente zum Drucken
Pfeil 18.5.1 Das »PrintDocument«-Steuerelement
Pfeil 18.5.2 Das »PrintDialog«-Steuerelement
Pfeil 18.5.3 Das »PageSetupDialog«-Steuerelement
Pfeil 18.5.4 Das »PrintPreviewDialog«-Steuerelement
Pfeil 18.5.5 Das »PrintPreviewControl«-Steuerelement
Pfeil 18.6 Drucken von Grafiken
Pfeil 18.6.1 Das Problem der verschiedenen Maßeinheiten
Pfeil 18.6.2 Festlegung der Einheiten und Skalierung
Pfeil 18.6.3 Beispielprogramm zum Drucken einer Grafik
Pfeil 18.7 Ausdruck von mehrseitigem Text


Galileo Computing - Zum Seitenanfang

18.5 Die 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 werden in der Toolbox von Visual Studio 2008 auch insgesamt fünf Steuerelemente angeboten, die uns mit ihren Fähigkeiten teilweise erheblich die Programmierung erleichtern. Ich möchte Ihnen diese Controls nun vorstellen.


Galileo Computing - Zum Seitenanfang

18.5.1 Das »PrintDocument«-Steuerelement Zur nächsten ÜberschriftZur vorigen Überschrift

Dieses Steuerelement, das einen Druckjob beschreibt, 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. Zur Erinnerung: Das ist der Name des Dokuments, der in einem Meldungsfenster angezeigt wird, sobald der Druckjob mit der Print-Methode gestartet wird.


Galileo Computing - Zum Seitenanfang

18.5.2 Das »PrintDialog«-Steuerelement Zur nächsten ÜberschriftZur vorigen Überschrift

PrintDialog gehört zu der Gruppe der Standarddialoge. In Kapitel 17 haben wir uns schon mit den Dialogen OpenFileDialog, SaveFileDialog usw. befasst. PrintDialog ist das letzte zu dieser Gruppe gehörende Steuerelement und 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 18.2).

Abbildung 18.2 Das Dialogfenster »PrintDialog«

Der Dialog wird aufgerufen, um einen Druckjob zu starten. Deshalb ist es auch notwendig, der Eigenschaft Document die Referenz auf den Druckauftrag zuzuweisen, der vom PrintDocument-Objekt beschrieben wird. 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. Diese können Sie Tabelle 18.8 entnehmen.


Tabelle 18.8 Eigenschaften des »PrintDialog«-Steuerelements

Eigenschaft Beschreibung

AllowCurrentPage

Aktiviert bzw. deaktiviert die Auswahloption Aktuelle Seite.

AllowPrintToFile

Erlaubt die Umleitung des Ausdrucks in eine Datei. Bei der Einstellung true ist das entsprechende Kontrollkästchen des Dialogs aktiviert.

AllowSelection

Aktiviert oder deaktiviert das Optionsfeld Seiten von ... bis.

AllowSomePages

Aktiviert oder deaktiviert das Optionsfeld Seiten.

Document

Dies ist der Druckjob, der die Druckereinstellungen liefert.

PrintToFile

Gibt an, ob das Kontrollkästchen zum Umleiten des Ausdrucks in eine Datei aktiviert ist oder nicht.

ShowHelp

Gibt an, ob eine Hilfsschaltfläche angezeigt wird. Ist der Wert true, 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 kann.


Wir wollen uns das Zusammenspiel des PrintDocument- und des PrintDialog-Objekts nun an einem Codefragment ansehen. Die Methode sei der Ereignishandler des Menüpunkts Drucken. 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 übernehmen möchte oder nicht.

private void mnuDrucken_Click(object sender, EventArgs e) { 
  printDialog1.Document = printDocument1; 
  if(printDialog1.ShowDialog() == DialogResult.OK) 
    printDocument1.Print(); 
}

Galileo Computing - Zum Seitenanfang

18.5.3 Das »PageSetupDialog«-Steuerelement Zur nächsten ÜberschriftZur vorigen Überschrift

Das PageSetupDialog-Steuerelement erlaubt es, die Seitenränder festzulegen, das Papierformat und die Papierquelle anzugeben sowie die Ausrichtung im Hoch- bzw. Querformat zur Laufzeit einzustellen. Dieser Dialog wird üblicherweise über den Menüpunkt Seite einrichten angezeigt.

Abbildung 18.3 Der Dialog »Seite einrichten«

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 Eigenschaften im Eigenschaftsfenster angezeigt und können dort oder im Programmcode die Anzeigeoptionen beeinflussen.


Tabelle 18.9 Eigenschaften des »PageSetupDialog«-Steuerelements

Eigenschaft Beschreibung

AllowMargins

Diese Eigenschaft gibt an, ob zur Laufzeit die Anpassung der Seitenränder aktiviert ist.

AllowOrientation

Gibt an, ob die Optionen zur Auswahl des Hoch- und Querformats aktiviert sind.

AllowPaper

Legt fest, ob der Bereich Papier des Dialogfelds (Papiergröße und Papierzufuhr) aktiviert ist.

AllowPrinter

Legt fest, ob die Drucken...-Schaltfläche aktiviert ist.

Document

Das ist der Druckjob, der die Druckereinstellungen liefert.

EnableMetric

Ruft einen Wert ab, der angibt, ob in Millimeter angezeigte Randeinstellungen automatisch in oder aus 1/100 Zoll konvertiert werden sollen, oder legt diese fest.

MinMargins

Ruft einen Wert ab, der die von den Benutzern auswählbare minimale Randbreite im aktuell eingestellten Maßsystem angibt, oder legt diesen fest.

ShowHelp

Gibt an, ob eine Hilfe-Schaltfläche angezeigt wird. Ist der Wert true, muss das Ereignis HelpRequest behandelt werden.

ShowNetwork

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


Änderungen, die an den Einstellungen vorgenommen werden, wirken sich auf das PageSettings-Objekt aus.

Etwas unglücklich ist im Dialog die Handhabung der Einstellung der Ränder gelöst. In Abbildung 18.3 können Sie sehen, dass die Beschriftung suggeriert, es handle sich bei den Einstellungen und der Anzeige links, rechts, oben und unten um Angaben in Millimeter. Das ist nur teilweise richtig. Wenn Sie Änderungen vornehmen, den Dialog mit OK schließen und ihn danach erneut öffnen, haben sich die Einträge geändert. Die Einträge, auch wenn Sie sie nicht geändert haben, werden als Millimeterangaben interpretiert und per Vorgabe in Zoll umgerechnet. Nur wenn Sie auf Abbrechen klicken, wird die Umrechnung nicht erfolgen.

In unseren Breitengraden, in denen das metrische System bevorzugt wird, sollten Sie zur Vermeidung dieses Effekts unbedingt die Eigenschaft EnableMetric=true einstellen. Die Umrechnung bei einer Bestätigung mit OK wird dadurch vermieden, und es wird nach dem erneuten Öffnen des Dialogs der gleiche Wert angezeigt. Jetzt handelt es sich wirklich um Millimeterangaben.


Galileo Computing - Zum Seitenanfang

18.5.4 Das »PrintPreviewDialog«-Steuerelement Zur nächsten ÜberschriftZur vorigen Überschrift

Wollen Sie eine Druckvorschau anbieten? Dann müssen Sie das PrintPreviewDialog-Steuerelement in Ihrer Anwendung einsetzen. Der Anwender kann im Fenster die Größenansicht der Druckausgabe nach vorgegebenen Werten verändern. Handelt es sich um einen mehrseitigen Druckjob, ist die Anzeige von gleichzeitig bis zu vier Druckseiten möglich.

Die Programmierung ist sehr einfach und ähnelt der anderer Steuerelemente. Voraussetzung ist, dass Sie das Steuerelement mit dem PrintDocument-Objekt in der Eigenschaft Document verbinden, damit es sich mit den notwendigen Informationen versorgen kann. Nur eine weitere Eigenschaft wird im Eigenschaftsfenster angeboten: UseAntiAlias. Wenn Sie diese Eigenschaft auf true setzen, werden Schriften geglättet – allerdings ist das gleichzeitig auch mit einer Verschlechterung der Performance verbunden.

Abbildung 18.4 Das »PrintPreviewDialog«-Steuerelement

Das Fenster weist eine Schaltfläche mit einem Druckersymbol auf. Damit diese Schaltfläche das ihr zugedachte Verhalten zeigt, nämlich das Drucken des Dokuments, muss der Rückgabewert der Methode ShowDialog ausgewertet werden:

private void mnuDruckvorschau_Click(object sender, EventArgs e) { 
  printPreviewDialog1.Document = printDocument1; 
  if (printPreviewDialog1.ShowDialog() == DialogResult.OK) 
    printDocument1.Print(); 
}

Galileo Computing - Zum Seitenanfang

18.5.5 Das »PrintPreviewControl«-Steuerelement topZur vorigen Überschrift

Während das Steuerelement PrintPreviewDialog im Komponentenfach abgelegt wird, weil es nicht in der Form angezeigt wird, ist das nun vorzustellende Steuerelement PrintPreviewControl ein herkömmliches, das zur Laufzeit der Anwendung für den Anwender sichtbar ist und den Bereich der Seitenvorschau anzeigt. Der Vorteil im Vergleich zu PrintPreviewDialog ist, dass Sie damit eine Seiten- bzw. Druckvorschau nach eigenen Vorstellungen realisieren können, die weit über das hinausgeht, was das Steuerelement PrintPreviewDialog anbietet.

Das Steuerelement ist ein direkter Nachfahre der Klasse Control und erbt die Member dieser Basisklasse. Die meisten werden Sie aber zur Programmierung, die ansonsten denkbar einfach ist, nicht benötigen. Sieben spezifische Eigenschaften zeichnen dieses Steuerelement aus, die wir uns alle ansehen wollen.

Die wichtigste ist die schon bekannte Eigenschaft Document. Solange dieser Eigenschaft kein PrintDocument-Objekt zugewiesen wird, kann das PrintPreviewControl nichts anzeigen.

Ein Dokument kann aus mehr als nur einer Seite bestehen. Diesem Thema werden wir uns später noch eingehend 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. Weist diese Eigenschaft true auf, 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 PrintPreviewDialog zum Glätten von Schriften.


Tabelle 18.10 Eigenschaften des »PrintPreviewControl«-Steuerelements

Eigenschaft Beschreibung

AutoZoom

Legt fest, ob die angezeigte Größe des Dokuments so angepasst wird, dass der gesamte verfügbare Bereich ausgefüllt wird.

Columns

Sollen mehrere Dokumente des Druckjobs gleichzeitig angezeigt werden, legt diese Eigenschaft die Anzahl der Spalten dafür fest.

Document

Gibt an, aus welchem Druckjob (PrintDocument) die Druckinformationen bezogen werden sollen.

Rows

Sollen mehrere Dokumente des Druckjobs gleichzeitig angezeigt werden, legt diese Eigenschaft die Anzahl der Zeilen dafür fest.

StartPage

Die Eigenschaft gibt bei mehreren anzuzeigenden Seiten die Nummer der ersten Seite an.

UseAntiAlias

Mit der Einstellung true werden Schriften geglättet. Die Anzeige wird besser, allerdings ist damit eine Verschlechterung der Performance verbunden.

Zoom

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


Das Beispielprogramm »Drucken«

Einen eigenen Dialog zur Seitenvorschau zu programmieren, erfordert nicht besonders viel Programmcode und reduziert sich sogar auf einige wenige Zeilen, wie im folgenden Beispiel zu sehen ist:

// ---------------------------------------------------------
// Beispiel:...\Kapitel 18\Drucken
// -------------------------------------------------------------
...

public partial class Form1 : Form { 
  // allgemeine Zeichenroutine zum Zeichnen in die 
  // PictureBox und zur Druckerausgabe 
  private void DrawGraphic(Graphics g, int x1, int y1, int x2, int y2) { 
  Pen pen = new Pen(Color.Black); 
  for (int i = x1; i <= x2; i += 20) 
    g.DrawLine(pen, x1, y1, i, y2); 
  for (int i = x2; i >= x1; i -= 20) 
    g.DrawLine(pen, x2, y1, i, y2); 
  }

  private void pictureBox1_Paint(object sender, PaintEventArgs e) { 
    this.DrawGraphic(e.Graphics, 0, 0, pictureBox.ClientSize.Width, 
                                pictureBox.ClientSize.Height); 
  }

  private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { 
    this.DrawGraphic(e.Graphics, e.MarginBounds.X, 
       e.MarginBounds.Y, e.MarginBounds.Width + 
       e.MarginBounds.X, e.MarginBounds.Height + 
       e.MarginBounds.Y); 
  }

  // Menü: Drucken 
  private void mnuDrucken_Click(object sender, EventArgs e) { 
    if (printDialog1.ShowDialog() == DialogResult.OK) 
      printDocument1.Print(); 
  }

  // Menü: Seite einrichten 
  private void mnuSeiteEinrichten_Click(object sender, EventArgs e) { 
    pageSetupDialog1.ShowDialog(); 
  }

  // Menü: Druckvorschau 
  private void mnuDruckvorschau_Click(object sender, EventArgs e) { 
    if (printPreviewDialog1.ShowDialog() == DialogResult.OK) 
      printDocument1.Print(); 
  }

  // Menü: Druckvorschau (erweitert) 
  private void mnuUserDefPrintPreview_Click(object sender, EventArgs e) { 
    Form2 frm = new Form2(); 
    frm.printPreviewControl1.Document = printDocument1; 
    frm.ShowDialog(); 
  } 
}

public partial class Form2 : Form { 
  private void btnGroesser_Click(object sender, EventArgs e) { 
    try 
    { 
      printPreviewControl1.Zoom += 0.05; 
    } 
    catch { } 
  }

  private void btnKleiner_Click(object sender, EventArgs e) { 
    try 
    { 
      printPreviewControl1.Zoom -= 0.05; 
    } 
    catch { } 
  }

  private void btnAuto_Click(object sender, EventArgs e) { 
    printPreviewControl1.AutoZoom = true; 
  } 
}

Abbildung 18.5 Das Hauptfenster des Beispiels »Drucken«

Abbildung 18.6 Der Dialog der erweiterten Druckvorschau



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2008






Visual C# 2008
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Coding for Fun






 Coding for Fun


Zum Katalog: Einstieg in Visual C# 2008






 Einstieg in
 Visual C# 2008


Zum Katalog: Videotraining - Visual C# 2008






 Videotraining -
 Visual C# 2008


Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2008






 Fortgeschrittene
 Programmierung mit
 Visual C# 2008


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Visual Basic 2008






 Visual Basic 2008


Zum Katalog: Einstieg in XML






 Einstieg in XML


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de