Problem beim Drucken einer 2 Seite

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von olicrash.

    Problem beim Drucken einer 2 Seite

    Hi,

    wahrscheinlich sehe dich den Wald vor lauter Bäumen nicht.

    Ich versuche mit dem folgenden Code zu drucken. Wenn in der For-Schleife mehr als 13 Durchgänge vorkommen, so soll eine 2 Seite gedruckt werden.

    VB.NET-Quellcode

    1. Private Sub Druckdokument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Druckdokument.PrintPage
    2. e.Graphics.PageUnit = GraphicsUnit.Millimeter
    3. mdDruck.KopfzeileDrucken(e)
    4. Dim Zeile As Int16 = 2
    5. For I As Int16 = 0 To Me.dgDruck.RowCount - 1
    6. With dgDruck.Rows(I)
    7. If .Cells(3).Value = True Then
    8. mdDruck.TerminDrucken(e, Zeile, Format(.Cells(0).Value, "ddd"), Format(.Cells(0).Value, "d"), .Cells(1).Value)
    9. Zeile += 1
    10. End If
    11. End With
    12. If Zeile = 14 Then 'Zweite Seite
    13. mdDruck.PraxisDrucken(e)
    14. mdDruck.CopyrightDrucken(e)
    15. e.HasMorePages = True
    16. mdDruck.KopfzeileDrucken(e)
    17. Zeile = 2
    18. End If
    19. Next
    20. mdDruck.PraxisDrucken(e)
    21. mdDruck.CopyrightDrucken(e)
    22. e.HasMorePages = False
    23. End Sub


    Die Aufrufe aus mdDruck laufen sauber. Das Programm erstellt aber keine 2. Seite sondern überdruckt die Daten auf der ersten Seite.

    Vielen Dank für die Hilfe
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    da müsste glaube ich was im code falsch sein, der deine 2. Seite druckt:

    VB.NET-Quellcode

    1. mdDruck.PraxisDrucken(e)
    2. mdDruck.CopyrightDrucken(e)
    3. e.HasMorePages = True
    4. mdDruck.KopfzeileDrucken(e)
    5. Zeile = 2


    Was, kann ich dir natürlich nicht sagen.
    Mit Zeile wird die Position im Ausdruck gesteuert.

    Nach meinem Verständnis muss der folgende Code so funktionieren

    VB.NET-Quellcode

    1. If Zeile = 14 Then 'Zweite Seite erstellen
    2. mdDruck.PraxisDrucken(e) 'Druck am Seitenende erste Seite
    3. mdDruck.CopyrightDrucken(e) 'Druck am Seitenende erste Seite
    4. e.HasMorePages = True 'Erzeugt Seitenumbruch
    5. mdDruck.KopfzeileDrucken(e) 'Druck am Seitenanfang zweite Seite
    6. Zeile = 2 'Positionszähler anpassen
    7. End If
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    das hilft wenig, wenn man nicht den Code für:

    VB.NET-Quellcode

    1. 'Zweite Seite erstellen
    2. 'Druck am Seitenende erste Seite
    3. 'Druck am Seitenende erste Seite
    4. 'Erzeugt Seitenumbruch!!!!!!!!! -> Das wichtigste
    5. 'Druck am Seitenanfang zweite Seite
    6. 'Positionszähler anpassen -> Da könnte ein Fehler drin stecken