Probleme bei Variablen in Druckvorschau

  • VB.NET
  • .NET 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von DerWaldFried.

    Probleme bei Variablen in Druckvorschau

    Hallo liebe Runde,

    ich bin neu in VB und versuche aktuell mein altes Programm für mein Laden noch mal wieder neu zu schreiben. Damals war es eine reine WebApplication mit HTML, PHP, MYSQL und CSS umgesetzt, nun wollte ich es als Desktop Variante umsetzen und habe mir dazu VBNet rausgesucht. Nun habe ich ein Fehler, wo ich zwar ein paar Lösungen gefunden habe, die aber nicht wirklich klappen. Und zwar habe ich folgenden Code bis jetzt:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub BTNClose_Click(sender As Object, e As EventArgs) Handles BTNClose.Click
    3. Application.Exit()
    4. End Sub
    5. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    6. NAPanel.Enabled = True
    7. NAPanel.Visible = True
    8. End Sub
    9. Public Sub BTNAufBes_Click(sender As Object, e As EventArgs) Handles BTNAufBes.Click
    10. Dim RegVorname As String = NAVorname.Text
    11. Dim RegNachname As String = NANachname.Text
    12. Dim RegAusweiss As String = NAAusweissnummer.Text
    13. Dim RegWohnhaft As String = NAWohnort.Text
    14. Dim RegGeraet As String = NAGeraet.Text
    15. Dim RegIMEI As String = NaIMEI.Text
    16. Dim RegModel As String = NAModel.Text
    17. Dim RegSchaden As String = NASchaden.Text
    18. Dim RegPreis As String = NAPreis.Text
    19. Dim RegTermin As String = NATermin.Text
    20. Dim RegTel As String = NATelefon.Text
    21. Using dlg As New PrintPreviewDialog
    22. Me.PrintDocument1.DocumentName = "Test" ' Arbeitstitel
    23. dlg.Document = Me.PrintDocument1
    24. dlg.ShowDialog()
    25. End Using
    26. End Sub
    27. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    28. e.Graphics.DrawString("Reperaturvetrag", New Font("arial", 30), Brushes.Black, New Point(30, 30))
    29. e.Graphics.DrawString(RegTel, New Font("arial", 10), Brushes.Black, New Point(40, 40))
    30. End Sub
    31. End Class


    Ich habe in dem Button " BTNAufBes_Click" alle meine TextBox Felder genommen und sie in Variablen reingepackt. Nun wollte ich diese Variablen in meiner "Private Sub PrintDocument1" in die Druckvorschau mit einarbeiten, so das der Drucker dann ein Vertragsformular mit allen angegebenen Daten druckt. Leider komme ich zum Teufel komm raus nicht an die Variablen ran. Vielleicht ist es für euch eine reine Lapalje, aber es wäre schön wenn mir einer das Problem erklären könnte so das ich es verstehe und mit eine Lösung bieten könnte.

    Liebe Grüße :thumbsup:
    @DerWaldFried Willkommen im Forum. :thumbup:
    An welcher Stelle im Code kommst Du an Deine Variablen nicht ran?
    Ansonsten gugst Du hier: Drucken mehrseitiger Dokumente
    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!
    Werde ich mir mal mit Freude durchlesen. Mein Problem liegt das ich die Variable nicht geschrieben bekomme auf dem Dokument und ich nicht genau weiß wie ich es dann umsetzen soll. Du siehst ja wie ich die ganzen TextBox Texte zu Variablen übergebe, aber dann ist die Umsetzung die Variable in die Druckvorschau und somit auch in den Druck zu bekommen irgendwie nicht möglich für mich.

    VB.NET-Quellcode

    1. e.Graphics.DrawString(RegTel, New Font("arial", 10), Brushes.Black, New Point(40, 40))

    als Beispiel nimmt er nun nicht die Variable RegTel und fügt sie ein, sondern gibt die Meldung "RegTel wurde nicht deklariert" , dabei habe ich die Button Klasse Public wo die Variablen Lagern. Ich werde mir dein Tutorial mal durchlesen :)

    Vollzitat entfernt ~EaranMaleasi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    @DerWaldFried Ich glaube, ich verstehe Dein Problem
    Zieh Dir ein PrintDocument auf die GUI.
    Zieh Dir einen PrintPreviewDialog auf die GUI.
    Gib der Property PrintPreviewDialog.Document den Wert PrintDocument1 (das vorhandene wird angeboten).
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim RegTel As String = "Roulade mit Klößen"
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. PrintPreviewDialog1.ShowDialog()
    5. End Sub
    6. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    7. e.Graphics.DrawString(RegTel, New Font("arial", 10), Brushes.Black, New Point(40, 40))
    8. End Sub
    9. End Class

    Feddich
    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!
    Vollzitat des Vorposts entfernt ~VaporiZed

    Erstmal Danke ich dir von Herzen für deine Mühen, wenn ich es richtig verstehe, soll ich zu meinem "PrintDocument1" was ich auf meinem Formular habe noch ein "PrintPreviewDialog" rein ziehen auf mein Formular und dann anstatt den Code:

    VB.NET-Quellcode

    1. Using dlg As New PrintPreviewDialog
    2. Me.PrintDocument1.DocumentName = "Test" ' Arbeitstitel
    3. dlg.Document = Me.PrintDocument1
    4. dlg.ShowDialog()
    5. End Using

    einfach den Code

    VB.NET-Quellcode

    1. PrintPreviewDialog1.ShowDialog()

    machen ? Als ich dieses nämlich ausgeführt habe, meinte mein Programm dann das keine Seiten deffiniert sind obwohl ich die änderungen alle sauber getroffen habe. Ich habe es nun versucht in dem ich folgenden Alghoritmus ablaufe:
    1. Person gibt Daten im Formular ein und klickt auf Button
    2. Button löst aus das eine Printpreview geöffnet wird und Textbox Felder in lokale Variable übergeben werden
    3. GENANNTER FEHLER
    Es tut mir leid wenn also die Frage vom Problem aufkommt. Ich übersende meinen nun aktualisierten Code:

    VB.NET-Quellcode

    1. Public Sub BTNAufBes_Click(sender As Object, e As EventArgs) Handles BTNAufBes.Click
    2. Dim RegVorname As String = NAVorname.Text
    3. Dim RegNachname As String = NANachname.Text
    4. Dim RegAusweiss As String = NAAusweissnummer.Text
    5. Dim RegWohnhaft As String = NAWohnort.Text
    6. Dim RegGeraet As String = NAGeraet.Text
    7. Dim RegIMEI As String = NaIMEI.Text
    8. Dim RegModel As String = NAModel.Text
    9. Dim RegSchaden As String = NASchaden.Text
    10. Dim RegPreis As String = NAPreis.Text
    11. Dim RegTermin As String = NATermin.Text
    12. Dim RegTel As String = NATelefon.Text
    13. Using dlg As New PrintPreviewDialog
    14. Me.PrintDocument1.DocumentName = "Test" ' Arbeitstitel
    15. dlg.Document = Me.PrintDocument1
    16. dlg.ShowDialog()
    17. End Using
    18. End Sub
    19. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    20. e.Graphics.DrawString("Reperaturvetrag", New Font("arial", 30), Brushes.Black, New Point(30, 30))
    21. e.Graphics.DrawString(RegTel, New Font("arial", 10), Brushes.Black, New Point(40, 40))
    22. End Sub
    23. End Class


    Daher ich ja erstmal abfragen muss was in der TextBox steht kann ich es ja auch nicht ausserhalb einer Sub platzieren daher ja sonst rein theoretisch ein "System.NullReferenceException" kommen müsste daher dann ja kein richtiger Objektverweiß erkannt werden kann. Es wäre super wenn die Hilfe nicht abbricht. Dein Tutorial habe ich auserdem schon durchgelesen und ein paar Fehler dadurch ausgemertzt :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    DerWaldFried schrieb:

    VB.NET-Quellcode

    1. Dim RegVorname As String = NAVorname.Text
    2. Dim RegNachname As String = NANachname.Text
    3. Dim RegAusweiss As String = NAAusweissnummer.Text
    4. Dim RegWohnhaft As String = NAWohnort.Text
    5. Dim RegGeraet As String = NAGeraet.Text
    6. Dim RegIMEI As String = NaIMEI.Text
    7. Dim RegModel As String = NAModel.Text
    8. Dim RegSchaden As String = NASchaden.Text
    9. Dim RegPreis As String = NAPreis.Text
    10. Dim RegTermin As String = NATermin.Text
    11. Dim RegTel As String = NATelefon.Text
    Sorry, hätte ich gleich sehen müssen.
    Diese Hariablen musst Du in der Klasse deklarieren und in der Prozedur zuweisen,
    so etwa:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim RegTel As String
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. RegTel = "Roulade mit Klößen"
    5. PrintPreviewDialog1.ShowDialog()
    6. End Sub
    7. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    8. e.Graphics.DrawString(RegTel, New Font("arial", 10), Brushes.Black, New Point(40, 40))
    9. End Sub
    10. End Class

    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!