Hi,
ich habe ein recht trivales Problem: ich will mehrere Seiten auf meinem Drucker ausgeben. Dazu benötige ich einen "Seitenvorschub".
Das sollte doch eigentlich ein Klacks sein ... aber irgendwie funktionieren die üblichen Tips aus dem Netz bei mir nicht. So habe ich das versucht:
Die Routine zum Drucken der Page sieht wie folgt aus:
Wenn ich nur eine Seite drucke schnuckt das auch ganz hervorragend ... wenn ich aber zwei oder mehr Seiten drucke, werden die AUFEINANDER gedruckt, d.h. der Seitenvorschub klappt nicht !
Was mache ich denn falsch ?
LG
Peter
ich habe ein recht trivales Problem: ich will mehrere Seiten auf meinem Drucker ausgeben. Dazu benötige ich einen "Seitenvorschub".
Das sollte doch eigentlich ein Klacks sein ... aber irgendwie funktionieren die üblichen Tips aus dem Netz bei mir nicht. So habe ich das versucht:
VB.NET-Quellcode
- Private WithEvents myPrintDocument As New PrintDocument
- Private Sub cmdPrint_Click(sender As Object, e As EventArgs) Handles cmdPrint.Click
- 'Select printer
- Dim locPD As New PrintDialog()
- Dim locDR As DialogResult = locPD.ShowDialog()
- If locDR = DialogResult.Cancel Then Return
- 'Start printer
- myPrintDocument.PrinterSettings = locPD.PrinterSettings
- myPrintDocument.Print()
- End Sub
- Private Sub myPrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles myPrintDocument.PrintPage
- numPages = CInt(txtNumberOfPages.Text)
- Dim blnHexaddr As Boolean = radHexOffset.Checked
- Dim blnShowChars As Boolean = chkShowChars.Checked
- Dim maxBytes As Integer = FormBase.FileByteArray.Count
- For currentPage As Integer = 1 To numPages
- GeneratePage(FormBase,
- e.Graphics,
- PageSize,
- currentPage,
- numPages,
- blnHexaddr,
- blnShowChars,
- maxBytes)
- If currentPage < numPages Then e.HasMorePages = True '<-- This does not work !
- Next
- e.HasMorePages = False
- End Sub
Die Routine zum Drucken der Page sieht wie folgt aus:
VB.NET-Quellcode
- Public Sub GeneratePage(FormHexEdit As frmMain,
- g As Graphics,
- PageSize As Integer,
- currentPage As Integer,
- numPages As Integer,
- blnHexAddr As Boolean,
- blnShowChars As Boolean,
- maxBytes As Integer)
- g.PageUnit = GraphicsUnit.Millimeter
- 'Define fonts
- Dim locFontRegular As New Font(FontFamily.GenericSerif, 12, FontStyle.Regular)
- Dim locFontCourier As New Font("Courier New", 12, FontStyle.Regular)
- 'Define print offsets
- Dim locOffset_X As Single = 10.0F ' 10 mm
- Dim locOffset_Y As Single = 10.0F ' 10 mm
- Dim locPen As New Pen(Color.Black, 0.25F)
- Dim locStringFormat As StringFormat = DirectCast(StringFormat.GenericTypographic.Clone, StringFormat)
- Dim PageWidth As Single = 192
- 'Write headlines
- Dim strHeader As String = "HexEdit Print "
- locStringFormat.LineAlignment = StringAlignment.Near
- locStringFormat.Alignment = StringAlignment.Near
- g.DrawString(strHeader,
- locFontRegular, Brushes.Black,
- New RectangleF(locOffset_X, locOffset_Y, PageWidth, 183.0F / 3.0F),
- locStringFormat)
- ...
Wenn ich nur eine Seite drucke schnuckt das auch ganz hervorragend ... wenn ich aber zwei oder mehr Seiten drucke, werden die AUFEINANDER gedruckt, d.h. der Seitenvorschub klappt nicht !
Was mache ich denn falsch ?
LG
Peter