| |
VB.NET - Ein- und UmsteigerVB.NET Drucken | | | Autor: jonny23 | Datum: 26.03.22 14:48 |
| Ich drucke ein Formular A4hoch(...).. und drucke in das Formular Datensätze
For j=1 to anzahl
e.Graphics.DrawString(aaa(j),...
If j = 16 Then
hier sollte die 1. Seite gedruckt werden, dann eine neue und weiterer Datenausdruck.
End If
Next
Ich habe Versuche mit e.HasMorePages = True angestellt, aber erfolglos.
Kann mir bitte jemand weiterhelfen !? | |
Re: VB.NET Drucken | | | Autor: jonny23 | Datum: 28.03.22 11:07 |
| Hat mir leider auch nicht weitergeholfen, ich finde keine Lösung,wie ich in der Schleife weiterdrucke. | |
Re: VB.NET Drucken | | | Autor: Manfred X | Datum: 28.03.22 12:29 |
| Hallo!
Das obige Beispiel hat es doch gezeigt.
Hier noch einmal ein Formular mit einem Array.
Die Methode PrintPages wird immer wieder neu aufgerufen und
deshalb muss der Arrayindex als Static mitlaufen.
Imports System.Drawing.Printing
Public Class frmPrintarray
Dim WithEvents pd As New PrintDocument 'das zu druckende Dokument
Dim pdia As New PrintDialog
Dim arr(100) As String 'Das zu druckende Array
Private Sub frmPrintarray_Load(sender As Object, e As EventArgs) Handles _
MyBase.Load
'Testdaten ins Array
For i As Integer = 0 To 100
arr(i) = "Zeile " & i.ToString
Next i
'Druckerdialog für Druckeinstellungen
pdia.ShowDialog()
pd.PrinterSettings = pdia.PrinterSettings
'Druckauftrag
pd.Print()
End Sub
Private Sub pd_PrintPage(sender As Object, e As PrintPageEventArgs) Handles _
pd.PrintPage
'erreichter Arrayindex wird zwischen den Aufrufen gespeichert
Static linecounter As Integer = -1
Static pagecounter As Integer = 0
Static lineheight As Integer
pagecounter += 1
Dim linefont As New Font("Arial", 10)
Dim pageheight As Integer = e.MarginBounds.Height
Dim pagewidth As Integer = e.MarginBounds.Width
Dim br As New SolidBrush(Color.Black)
Dim pageend As Boolean = False
Dim posy As Integer = e.MarginBounds.Top
Dim sz As SizeF
Do
linecounter += 1 'Arayindex hochsetzen
If linecounter = 0 Then
sz =
e.Graphics.MeasureString(arr(linecounter), linefont,
pagewidth)
lineheight = CInt(Math.Ceiling(sz.Height))
End If
posy += lineheight
If posy + lineheight <= e.MarginBounds.Height Then
sz =
e.Graphics.MeasureString(arr(linecounter), linefont,
pagewidth)
lineheight = CInt(Math.Ceiling(sz.Height))
Dim lr As New Rectangle(e.MarginBounds.Left, posy, CInt(
sz.Width), lineheight)
'Ausgabe einer Druckzeile
e.Graphics.DrawString _
(arr(linecounter), linefont, br, lr)
Else
'Ende einer Druckseite ist erreicht
linecounter -= 1 'Array-Index für nächste Seite vorbereiten
pageend = True
End If
'Prüfen ob Seitenende oder Arrayende erreicht?
Loop While Not pageend AndAlso linecounter < arr.length - 1
br.Dispose() 'benutzte Pinsel-Ressourcen freigeben
'Druckausgabe abgeschlossen?
e.HasMorePages = linecounter < arr.Length - 1
End Sub
End Class Ergänzend: Wenn Du nach einer bestimmten Zeilenzahl pro Seite einen Seiten-Vorschub erzwingen willst, muss ein weiterer Zähler (nicht static) mitlaufen und in den Loop While Bedingungen
zusätzlich eingefügt werden.
Beitrag wurde zuletzt am 28.03.22 um 12:46:51 editiert. | |
Re: VB.NET Drucken | | | Autor: jonny23 | Datum: 28.03.22 13:06 |
| Danke, alles klar. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|