Hallo ihr lieben. Jetzt versuch ichs nochmal ordentlich :o)
Ich nutze den VB eigenen Printing Naespace um druckbare Rechnungen zu erzeugen.
Hierzu habe ich eine UC "UCRechnung" erstellt, auf der der User Artikel (Rechnungspositionen) eingibt oder auswählt. Meine Klasse "Rechnungerstellung" ist dann für die Vorschau und den Druck verantwortlich.
Zu meinem (100% funktionierenden) Code habe ich eine Frage, bzw. ein Verständnissproblem mit der PrintDocument Klasse:
ersmal der Code:
Spoiler anzeigen
Frage1: Ich übergebe das
Um das zu erreichen habe ich zuerst innerhalb meiner Klasse eine Funktion geschrieben, die ein PrintDocument zurückgibt. Habe aber festgestellt, dass dies gar nicht nötig ist. Warum ist das so?
Also wenn ich eine integer Variable habe, diese wird einer Klasse übergeben, damit sie durch irgendwelche Rechnerei geändert wird, brauche ich eine Funktion. Hier nicht.
Frage2: bezieht sich auf die boolean Prüfung am Ende der obigen Sub:
Egal ob Print oder Not Print, es wird immer ein neues PrintDocument erzeugt.
Nun ist es bei mir aber so, dass erst nach Erstellung und Ansicht (des Users) der Vorschau gedruckt werden kann.
Ich möchte also immer ein schon bestehendes PrintDocument drucken, erstelle dies aber immer neu.
Hierfür habe ich versucht ein PrintDocument auf die Form zu ziehen und dieses dann zu verwenden. Das Ergebnis war aber, dass ein und das selbe Dokument einfach mehrfach beschrieben wurden.
Ist es normal, dass das Dokument jedes mal neu erstellt wird? Oder habe ich hier einen Fehler?
Falls jemand die Solution braucht, hänge ich sie ran. Den Code findet ihr in der UCRechnung, sowie in der Klasse Rechnungserstellung (beide im Hauptordner)
Ich nutze den VB eigenen Printing Naespace um druckbare Rechnungen zu erzeugen.
Hierzu habe ich eine UC "UCRechnung" erstellt, auf der der User Artikel (Rechnungspositionen) eingibt oder auswählt. Meine Klasse "Rechnungerstellung" ist dann für die Vorschau und den Druck verantwortlich.
Zu meinem (100% funktionierenden) Code habe ich eine Frage, bzw. ein Verständnissproblem mit der PrintDocument Klasse:
ersmal der Code:
VB.NET-Quellcode
- Private Sub CreateInvoice(Print As Boolean) ' Print wird gesetzt je nachdem ob der User auf Vorschau oder Drucken klickt - es wird jedoch vor dem Drucken IMMER erst eine Vorschau angezeigt
- '[...]
- Dim PrintDocument2 = New PrintDocument
- Dim InvoiceClass As New Rechnungserstellung(_ListOfInvoicePositions, GetInvoiceType, CompanyDataLeft, CompanyDataRight,
- CustomerDataLeft, CustomerDataRight, DTPRechnungsDatum.Value, SettingsRow.VolleSteuer,
- SettingsRow.ErmaessigteSteuer, CBXbezahlt.Checked, PrintDocument2, _Printer)
- If Print Then
- For i = 1 To _PrintingAmount
- PrintDocument2.Print()
- Next
- Else
- AddHandler InvoiceClass.CreateionFinsihed, AddressOf ShowWebView 'Edit falls hier jemand drüber stolpert, es wird kein WebView angezeigt, sondern die gesamt Seitenzahl in einer Variable gespeichert und auf der Form angezeigt
- ' den Namen der Sub habe ich gerade geändert.
- PrintPreviewControl1.Document = PrintDocument2
- PrintPreviewControl1.Zoom = 0.6
- LBLZoomFaktor.Text = "60%"
- End If
- End Sub
Frage1: Ich übergebe das
PrintDocument2
an meine Rechnungserstellung Klasse. Es wird durch die Klasse geändert und ändert sich auch in der Sub CreateInvoice
.Um das zu erreichen habe ich zuerst innerhalb meiner Klasse eine Funktion geschrieben, die ein PrintDocument zurückgibt. Habe aber festgestellt, dass dies gar nicht nötig ist. Warum ist das so?
Also wenn ich eine integer Variable habe, diese wird einer Klasse übergeben, damit sie durch irgendwelche Rechnerei geändert wird, brauche ich eine Funktion. Hier nicht.
Frage2: bezieht sich auf die boolean Prüfung am Ende der obigen Sub:
Egal ob Print oder Not Print, es wird immer ein neues PrintDocument erzeugt.
Nun ist es bei mir aber so, dass erst nach Erstellung und Ansicht (des Users) der Vorschau gedruckt werden kann.
Ich möchte also immer ein schon bestehendes PrintDocument drucken, erstelle dies aber immer neu.
Hierfür habe ich versucht ein PrintDocument auf die Form zu ziehen und dieses dann zu verwenden. Das Ergebnis war aber, dass ein und das selbe Dokument einfach mehrfach beschrieben wurden.
Ist es normal, dass das Dokument jedes mal neu erstellt wird? Oder habe ich hier einen Fehler?
Falls jemand die Solution braucht, hänge ich sie ran. Den Code findet ihr in der UCRechnung, sowie in der Klasse Rechnungserstellung (beide im Hauptordner)