Printform erpessen!

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Uchi-Komi.

    Printform erpessen!

    (Ich wollte erst "Printform vergewaltigen" schreiben, aber dann tat mir die Printform doch leid!)

    Schönen guten Abend meine Herren!

    :P

    Also, wie immer funktioniert es, aber nicht so wie ich will!

    Die Printform printet wie verrrückt, aber...

    Der Drucker druckt wahnsinnige Seitenränder und schneidet das tolle Formular seitlich ab.

    Meine "Faustkeil-Lösung" besteht nun darin, die Formularbreite auf 700 Pixel zusammenzuquetschen.

    Dann geht's.

    Konsequenz: Qualitätsverlust!
    :(

    Hat jemand eine Idee?

    Melde mich morgen wieder.

    Nach 2 Tassen Schierker Feuerstein mit jeweils einem Spritzer Zitronensaft und einem oder zwei Eiswürfeln kann ich Euren weisen Ratschlägen sowieso nicht folgen.

    ?(

    Außerdem verschwimmen die Buchstaben!

    Er - der Feuerstein - ist sehr klebrig, beruhigt aber den Magen, wenn man kein Geschwür dort hat.

    Beste Grüße aus Sachsen!

    Siehe auch: Ähnliche im Forum bislange wohl ungelöste Aufgabe?


    19:18 Uhr
    Ob das die Lösung ist?
    Eben gefunden bei: "I
    n der Ruhe liegt die Kraft":

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim pf As New PrintForm
    3. pf.Form = Me 'z.B. deine aktive Form
    4. pf.PrintAction = Printing.PrintAction.PrintToPreview 'hier z.B. die Seitenansicht
    5. '
    6. Dim page = pf.PrinterSettings.DefaultPageSettings
    7. page.Landscape = True 'Querformat (False = Hochformat)
    8. '
    9. 'Seitenränder anpassen
    10. page.Margins.Top = x
    11. page.Margins.Bottom = x
    12. page.Margins.Right = x
    13. page.Margins.Left = x
    14. '
    15. pf.Print()
    16. End Sub


    Werd' ich morgen mal probieren!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Uchi-Komi“ ()

    Uchi-Komi schrieb:

    Der Drucker druckt wahnsinnige Seitenränder und schneidet das tolle Formular seitlich ab.
    Lass das Framework für Dich arbeiten, gugst Du hier.
    Wie Du die DefaultPageSettings.Margins behandeln musst, hab ich mal kurz in diesem Beispiel implementiert.
    1. kommt der PrintDialog, hier kannst Du den Drucker auswählen,
    2. mit dem PageSetupDialog kannst Du die Seitenränder einstellen,
    3. folgt der PrintPreviewDialog, er zeigt die Druckvorschau an.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private PrintText As String
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. ' Drucker festlegen
    5. Using dlg As New PrintDialog
    6. dlg.Document = Me.PrintDocument1
    7. If dlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then
    8. Return
    9. End If
    10. End Using
    11. ' Seitenränder festlegen
    12. Using dlg As New PageSetupDialog
    13. dlg.Document = Me.PrintDocument1
    14. If dlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then
    15. Return
    16. End If
    17. End Using
    18. ' Druckvorschau
    19. Using dlg As New PrintPreviewDialog
    20. dlg.Document = Me.PrintDocument1
    21. dlg.ShowDialog()
    22. End Using
    23. End Sub
    24. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    25. Dim g = e.Graphics
    26. Dim rc = g.VisibleClipBounds ' der Druckbereich
    27. ' Seitenränder für diese Seite festlegen
    28. Dim margin = Me.PrintDocument1.DefaultPageSettings.Margins
    29. rc.Offset(margin.Left, margin.Top) ' obere linke Ecke
    30. rc.Width -= (margin.Left + margin.Right) ' neue Breite
    31. rc.Height -= (margin.Top + margin.Bottom) ' neue Höhe
    32. g.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height)
    33. Dim ft = New Font("Arial", 12) ' der Druck-Font
    34. g.DrawString(Me.PrintText, ft, Brushes.Black, rc)
    35. End Sub
    36. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    37. ' Drucktext aufbauen
    38. Dim txt = "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. "
    39. For i = 1 To 100
    40. Me.PrintText &= txt
    41. Next
    42. End Sub
    43. End Class
    Im PageSetupDialog kannst Du mit den Rändern spielen und Du bekommst sofort die entsprechende Vorschau angezeigt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank!

    Ich hab den Spoiler eingefügt.

    Bei der Zeile "dlg.Document = Me.PrintDocument1" kommt die Fehlermeldung: PrintDocument1 ist kein Member des Formulars.

    Was muss ich machen, dass PrintDocument1 als ein Member des Formulars erkannt wird?

    Ich gebe zu, ich habe mit Me. Wissendefizite.

    Beste Grüße!

    Uchi-Komi schrieb:

    PrintDocument1
    Zieh Dir im Designer ein PrintDocument aus der Toolbox auf die Form.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!