Imports System.Drawing.Printing
Dim text_rechts As New StringFormat
Dim text_links As New StringFormat
Dim text_mitte As New StringFormat
Dim y_achse As Integer
Dim x_achse As Integer
Dim rotation As Integer
'Die Variable Seitenzähler und der Anfangswert 1 für den Seitenzähler darf nicht innerhalb des Document1 stehen.
Dim Seitenzaehler As Integer = 1
'SeitenNr in SeitenTextbox anzeigen
'Anzahl Seiten in der Vorschau enthalten
Dim AnzahlVorschauSeiten As Integer
Private Sub Exit_Button_Click(sender As Object, e As EventArgs) Handles Exit_Button.Click
Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
text_rechts.Alignment = StringAlignment.Far
text_links.Alignment = StringAlignment.Near
text_mitte.Alignment = StringAlignment.Center
x_achse = x_achse_TextBox.Text
y_achse = y_achse_TextBox.Text
rotation = rotationTextBox.Text
'Der Inhalt aus den Textboxen und der Richtextbox, sowie aus der Datenbank, soll jeweils auf einem eigenen Blatt ausgedruckt werden.
Select Case Seitenzaehler
Case Is = 1
'Text zum Drucken vorbereiten und Ausgabe auf Blatt 1
e.Graphics.DrawString(Zeile_1_TextBox.Text, New Font("Arial", 14, FontStyle.Regular), Brushes.Red, x_achse, y_achse, text_rechts)
e.Graphics.DrawString(Zeile_2_TextBox.Text, New Font("Arial", 14, FontStyle.Regular), Brushes.Red, x_achse, y_achse + 20, text_rechts)
e.Graphics.TranslateTransform(x_achse, y_achse)
'Den Text rotieren um X° Grad
e.Graphics.RotateTransform(rotation)
e.Graphics.DrawString(Zeile_3_TextBox.Text, New Font("Arial", 14, FontStyle.Regular), Brushes.Red, x_achse, y_achse, text_rechts)
'Ausgabe der Ritchtextbox auf Blatt 2
'Mit drawRect wird der Text nur innerhalb der Begrenzung eines Rechteck ausgegeben,
'dessen Größe mit width und height vorher festgelegt wird.
'Das F hinter der Zahl bedeutet Float und hat mit der Genauigkeit der Gleitkommaberechnung zu tun.
'Statt 300.0F könnte man auch einfach 300 eingeben.
Dim width As Single = 300.0F
Dim height As Single = 800.0F
Dim drawRect As New RectangleF(x_achse, y_achse, width, height)
e.Graphics.DrawString(RichTextBox1.Text, New Font("Arial", 14, FontStyle.Regular), Brushes.Red, drawRect, text_links)
'Anstatt x_achse, y_achse + 60 wurde das oben mit drawRect ersetzt, die nachstehende Zeile ist aus
'dem Original Code im Video aber auskommentiert
'e.Graphics.DrawString(RichTextBox1.Text, New Font("Arial", 14, FontStyle.Regular), Brushes.Red, x_achse, y_achse + 60, text_links)
'##########################Datenbank Inhalt drucken #####################
'Ausgabe Dantenbankinhalt auf Blatt 3
Case Is = 3
Dim Spaltenname As String
Dim Zellen_Inhalt As String
Dim Anzahl_Zeilen As Integer
Dim Zeile As Integer
Dim Spalte As Integer = 1
'Zuerst wird der Spaltenname abgerufen und angezeigt mit einer For/Next Schleife
For i = 1 To 3 Step 1
Spaltenname = Me.TableDataGridView.Columns(Spalte).HeaderText
e.Graphics.DrawString(Spaltenname, New Font("Arial", 14, FontStyle.Regular), Brushes.Black, x_achse, y_achse, text_links)
x_achse = x_achse + 100
Spalte = Spalte + 1
Next i
'x_achse wieder auf den Ausgangswert der Textbox zurücksetzen
x_achse = x_achse_TextBox.Text
'Nun werden die einzelnen Zeilen und deren Zellen Inhalte nach dem gleichen Schema mit einer For/Next Schleife abgerufen, dazu starten wir wieder in der ersten Spalte.
'Zähler der y_achse wieder auf den Ausgangswert der Textbox zurücksetzen und +30 erhöhen, damit die Textausgabe unter dem Spaltennamen erfolgt.
y_achse = y_achse_TextBox.Text + 30
'Nun die Anzahl Zeilen zählen die im DataGridView angezeigt werden
Anzahl_Zeilen = Me.TableDataGridView.RowCount.ToString
'Von der Anzahl Zeilen wird -1 abgezogen, damit die letzte leere Zeile nicht mit gezählt wird.
Anzahl_Zeilen = Anzahl_Zeilen - 1
'Mit der nächsten For/Next Schleife wird immer eine Spalte weiter gezählt. In dieser Schleife läuft dann auch die Zweite Schleife zum Anzeigen der Zeilen und deren Inhalte
'Zeile wird mit "0" angegeben, da die erste Zeile von Visual Basic mit "0" beginnt und nicht mit 1
Zeile = 0
'Jetzt die oben erwähnt Zweite Schleife zum Anzeigen der Zeilen und deren Inhalte
For z = 1 To Anzahl_Zeilen Step 1
Me.TableDataGridView.Rows(Zeile).Selected = True
Me.TableDataGridView.CurrentCell = Me.TableDataGridView.Rows(Zeile).Cells(Spalte)
Zellen_Inhalt = Me.TableDataGridView.CurrentCell.Value
e.Graphics.DrawString(Zellen_Inhalt, New Font("Arial", 14, FontStyle.Regular), Brushes.Red, x_achse, y_achse, text_links)
Zeile = Zeile + 1
Die MessageBox wurde hier auskommentiert, da Sie in dem letzten Tutorial nicht benötigt wurde!!!!
'MsgBox("Anzahl Zeilen: " & Anzahl_Zeilen.ToString & Chr(10) & "Spalte: " & Spalte.ToString & Chr(10) & "Zeile: " & Zeile.ToString & Chr(10) & "Y-Achse: " & y_achse.ToString & Chr(10) & "X-Achse: " & x_achse.ToString)
'Zähler der y-achse erhöhen um den Wert der Tabelle in der nächsten Zeile anzuzeigen
y_achse = y_achse + 30
Next z
'Die nächste Spalte auswählen
Spalte = Spalte + 1
'Zähler der y-achse wieder auf den Ausgangswert der Textbox zurücksetzten und wie am Anfang um +30 erhöhen, so das wir in der nächsten Spalte wieder unter dem Spaltennamen beginnen und den Text anzeigen lassen
y_achse = y_achse_TextBox.Text + 30
'Die x-achse erhöhen damit der Text unter der nächsten Spalte ausgegeben wird
x_achse = x_achse + 100
Next s
End Select
'Der Befehl "e.HasMorePages" bewirkt, dass "Private Sub PrintDocument1_PrintPage" immer wieder neu aufgerufen wird. Unterbricht man diesen Vorgang nicht, so würde das Programm in einer Endlosschleife hängen bleiben.
If Seitenzaehler < 3 Then
e.HasMorePages = True
'Den Zähler der Seite um 1 erhöhen
Seitenzaehler = Seitenzaehler + 1
Else
'Ist der Zähler der Seite größer "3" wird der Vorgang "HasMorePages" abgebrochen.....
'Anzahl Seiten in AnzahlVorschauSeiten speichern
AnzahlVorschauSeiten = Seitenzaehler
'und der Zähler der Seite wird auf 1 zurückgestellt
Seitenzaehler = 1
End If
AnzahlSeiten_Label.Text = "- " & AnzahlVorschauSeiten & " -"
SeitenNr_TextBox.Text = 1
Private Sub Vorschau_Button_Click(sender As Object, e As EventArgs) Handles Vorschau_Button.Click
Function Drucken_Vorschau()
'Seitenzahl in der Textbox leeren
SeitenNr_TextBox.Text = ""
'Mit welchem Drucker soll die Vorschau dargestellt werden
PrintDocument1.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewControl1.Document = PrintPreviewDialog1.Document
'Autozoom für Druckvorschau
PrintPreviewControl1.AutoZoom = True
Private Sub Drucken_Button_Click(sender As Object, e As EventArgs) Handles Drucken_Button.Click
Drucken_Vorschau()
Dim standard_Drucker As New PrintDocument
PrintDocument1.PrinterSettings.PrinterName = standard_Drucker.PrinterSettings.PrinterName
PrintDocument1.Print()
Private Sub TableBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles TableBindingNavigatorSaveItem.Click
Me.Validate()
Me.TableBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DruckerTutDBDataSet)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: Diese Codezeile lädt Daten in die Tabelle "DruckerTutDBDataSet.Table". Sie können sie bei Bedarf verschieben oder entfernen.
Me.TableTableAdapter.Fill(Me.DruckerTutDBDataSet.Table)
Private Sub SeiteMinus_Button_Click(sender As Object, e As EventArgs) Handles SeiteMinus_Button.Click
SeitenNr = SeitenNr_TextBox.Text
If SeitenNr > 1 Then
SeitenNr = SeitenNr - 1
SeitenNr_TextBox.Text = SeitenNr
End If
'Da der Seitenzähler für die Seiten in der Vorschau ebenfalls wie auch schon bei der Datenbank mit "0" beginnt, rechnen wir die SeitenNr -1
'Möchten wir nun jeweils eine Seite angezeigt bekommen, so müssen wir die Anzahl der Reihen in der Vorschau auf 1 stellen, falls zuvor der Button "Alle_Seiten" für die Vorschau angeklickt wurde.
PrintPreviewControl1.Rows = 1
'Die gewählte Seite in der Vorschau anzeigen lassen
PrintPreviewControl1.StartPage = SeitenNr
Private Sub SeitePlus_Button_Click(sender As Object, e As EventArgs) Handles SeitePlus_Button.Click
SeitenNr = SeitenNr_TextBox.Text
If SeitenNr < AnzahlVorschauSeiten Then
SeitenNr = SeitenNr + 1
SeitenNr_TextBox.Text = SeitenNr
End If
'Da der Seitenzähler für die Seiten in der Vorschau ebenfalls wie auch schon bei der Datenbank mit "0" beginnt, rechnen wir die SeitenNr -1
'Möchten wir nun jeweils eine Seite angezeigt bekommen, so müssen wir die Anzahl der Reihen in der Vorschau auf 1 stellen, falls zuvor der Button "Alle_Seiten" für die Vorschau angeklickt wurde.
PrintPreviewControl1.Rows = 1
'Die gewählte Seite in der Vorschau anzeigen lassen
PrintPreviewControl1.StartPage = SeitenNr
Private Sub Alle_Seiten_Button_Click(sender As Object, e As EventArgs) Handles Alle_Seiten_Button.Click
'Alle Seiten der Vorschau in einer Übersicht Anzeigen lassen
PrintPreviewControl1.Rows = AnzahlVorschauSeiten