Drucken

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Hallo alle zusammen.

    Ich komme einfach nicht weiter und hoffe das Ihr mir helfen könnt.
    Ich habe mir eine Oberfläche zusammen gestellt, wo der Benutzer einige Daten eingeben soll.
    Diese solle dann auf Knopfdruck (Button) gedruckt werden.
    NEben den Daten die der Benutzer eingegeben hat, sind noch einige Logos.
    Ich habe das einfache drucken hinbekommen indem ich die Funktion " Visual Basic PowerPacks" PrintForm eingebaut habe.
    Den Button habe ich dann den Befehl : PrintForm1.Print() hinterlegt.
    Soweit funktioniert das auch alles.
    Nur kann ich die zu druckende Seite nicht ändern (Druckereinstellungen).
    Ich hätte gerne, das das was gedruckt wird, auf eine Din A4 Seite gedruckt (Skalliert) wird.

    Unter Google habe ich folgendes gefunden :

    Quellcode

    1. PrintDialog1.Document = PrintDocument1
    2. If PrintDialog1.ShowDialog() = _
    3. Windows.Forms.DialogResult.OK Then
    4. PrintDocument1.Print()
    5. End If


    Damit kann ich zwar wunderbar die Druckereinstellungen aufrufen, nur wird mir dann eine leere Seite gedruckt.

    was mache ich falsch ??

    Gruß

    Roland
    danke für die antwort. Aber leider hilft mir das noch nicht weiter. Ich beschäftige mich erst seit zwei Tage mit VB :(
    Was genau benötig eich denn, wenn ich in Form1.vb folgendes habe :

    eine PctureBox mit einem Bild
    Und eine TextBox wo der Benutzer was eingeben kann.

    Dann noch ein Button, der das Drucken auslösen soll.

    Gruß

    Roland

    Arco2726 schrieb:

    Ich beschäftige mich erst seit zwei Tage mit VB

    Dannis drucken noch zu früh für dich.
    Zum Drucken muß man mit der IDE umgehen können (insbes. das Debug-System), Datentypen auseinanderhalten, den ObjectBrowser/ObjektKatalog benutzen können, das Eventsystem verstehen...

    Alles Dinge, die man durchaus lernen kann: dieses Buch lesen (hingegen das Galileio-Openbook ist Mist)
    Also mein erstes Buch habe ich schon " Einstig in Visual Basic 2012" von Galileo ..... :D
    Einiges aus dem Buch kenne ich schon aus PHP. Damit bin ich besser vertraut.
    Dort habe ich mein Problem gelöst, indem ich PDF´s mit den eingegeben Informationen erstellt habe.
    Habe meine Rechnungen mit FPDF erstellt

    Ist das hier bei VB auch möglich ?

    Gruß

    Roland
    @Arco2726

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private WithEvents PrintDocument1 As Printing.PrintDocument
    3. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
    4. ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
    5. Handles PrintDocument1.PrintPage
    6. Dim bmp As New Bitmap(Me.Width, Me.Height)
    7. Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
    8. e.Graphics.DrawImage(bmp, 0, 0)
    9. End Sub
    10. Private Sub cmd2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd2.Click
    11. If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    12. PrintDocument1.Print()
    13. End If
    14. End Sub
    15. End Class


    Probier das mal bitte. Wenn es klappt, du aber trotzdem Fragen zum Code hast, stelle sie. Das richtige Verständnis am Anfang ist sehr wichtig ;)
    Danke dir LaMiy.

    Habe den Code mal übernommen. Leider bekomme ich folgende fehlermeldung :

    Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" ist in WindowsApplication5.exe aufgetreten.
    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Es öffnet sich das Fenster, wo ich den Drucker auswählen kann. Wenn ich dann alle einstellungen gemacht habe und auf OK gehe bricht das Programm ab.
    @Arco2726

    Und wenn du es so machst ?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
    3. ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
    4. Handles PrintDocument1.PrintPage
    5. Dim bmp As New Bitmap(Me.Width, Me.Height)
    6. Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
    7. e.Graphics.DrawImage(bmp, 0, 0)
    8. End Sub
    9. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    10. If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    11. PrintDocument1.Print()
    12. End If
    13. End Sub
    14. End Class


    Du musst vorher natürlich im Designer ein PrintDocument und ein PrintDialog hinzufügen :)

    Arco2726 schrieb:

    Habe den Code mal übernommen. Leider bekomme ich folgende fehlermeldung :
    Beherzige lieber den Rat vom @ErfinderDesRades:. Back zunächst kleinere Brötchen, die Welt, Rom, der Eiffelturm sind nicht an einem Tag erschaffen worden.
    Auch Du wirst noch mehrere Male Frühstücken, bis Du Tasten so drücken kannst, dass da ein lauffähiges Programm raus kommt. :D
    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!
    Moin Moin.

    Habe es nochmal versucht. Leider funktionert es nicht so wirklich. Ich kann zwar die einstellungen vornehmen, aber die werden nicht übernommen. Scheint so, als wird da nur ein Screenprint gemacht. Also die Form inkl. Rahmen usw.

    Werde dann mal wieter lesen, lesen und lesn. Bis ich die ganze Welt erobern kann :P

    Gruß

    Roland
    dieses Buch lesen (hingegen das Galileio-Openbook ist Mist)

    naja - nur lesen - weiß nicht, ob man da viel weiter kommt. Hast du kein Projekt, wos was dran auszuprobieren gibt?

    Könnte mir vorstellen, du liest ein paar Seiten, bis dir ein Mechanismus klar wird, den du auch bei deim Proggi nutzen kannst.
    Wie stehts zB. mit Option Strict On!?
    Vielleicht machst Du Dir zunächst ein separates kleines Testprogramm, nur mit einem PrintDocument und einem Button, später dann mit einem PrintPreviewDialog.
    Drucke einfach einen "Dödel-Text" auf einen PDF-Drucker, das geht schnell und verbraucht kein Papier.
    Wenn Du dann ein Wenig Fingerspitzengefühl bekommen hast, starte die nächste Phase. :thumbsup:
    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!