HB_PRINTER und Serienbrief [erledigt]

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 322
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen

HB_PRINTER und Serienbrief [erledigt]

Beitrag von Wolfgang_B » Fr, 17. Jan 2020 13:30

Mahlzeit,
ich versuche gerade mit Huberts Druckerklasse Serienbriefe zu generieren. Auf der 1. Seite soll ein Briefkopf und ein Standardtext gedruckt werden, auf die jeweilige 2. Seite ein Aufstellung von Daten. Und das bei allen Kunden in der DB. Irgendwie kriege ich das nicht hin. Die erste Seite ist in der Vorschau noch sichtbar, dann aber nichts mehr. Irgendwie denke ich wahrscheinlich falsch :oops:


Code: Alles auswählen

      DO WHILE ! EOF()														    
 		         // Auf 1. Seite drucken
 		         ::printForm()									// Drucken Briefkopf
  			 ypos := 1800
 			 ::PrintMemo( ::xposLR, yPos, ::formularText, "L" )		// Drucken Brief																										    				                         										
			
			// Auf 2. Seite drucken
			::PrintText(::xposLR, yPos, ::formularText, Daten)
			DBSKIP()
		ENDDO															
Zuletzt geändert von Wolfgang_B am Mo, 20. Jan 2020 10:06, insgesamt 1-mal geändert.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1729
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: HB_PRINTER und Serienbrief

Beitrag von Werner_Bayern » Fr, 17. Jan 2020 13:45

Servus Wolfgang,

das Grundgerüst sollte so aussehen:

Code: Alles auswählen

hbprint initialisieren
do while…
   :startDoc()
   … drucken (:print())
   :EndDoc()
   skip
enddo
:destroy()
es grüßt euch

Werner

Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 322
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen

Re: HB_PRINTER und Serienbrief

Beitrag von Wolfgang_B » Fr, 17. Jan 2020 18:42

Hallo Werner,
das Dumme ist nur, daß ich in ::printForm() die ganzen Briefköpfe meiner Kunden hinterlegt habe. Die alle nochmal in ::print() anzulegen, fände ich nicht so schön ..
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15008
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: HB_PRINTER und Serienbrief

Beitrag von brandelh » Sa, 18. Jan 2020 15:32

das sollst du doch auch gar nicht :-)

Wichtige Frage ... geht der Druck auf Papier oder in PDF ?

Auf Papier kann man das nacheinander drucken, wobei die Seitennummern zurückgesetzt werden müssen.
Bei PDFs willst du sicher einzelne Dateien oder alles in eine ?

Wenn man ohne meinen Druckdialog druckt, ist man da flexibel, der Druckdialog benötigt aber die Methode ::Print(),
dieser steuert den Aufruf von ::PrintForm() wenn nötig.
Bei einem Serienbrief muss man nur Erkennen, wann das neue Dokument anfangen soll.

Diese Variablen sind in deiner Print() Methode zuweißbar !
Wenn du vor dem neuen Brief diese wieder auf 1 setzt, sollte das funktionieren wie gewünscht:

Code: Alles auswählen

:NewPage() // =>  ::nPageNo++ wurde ausgeführt, du willst aber nun wieder eine 1. Seite innerhalb dieses Druckjobs !
::nPageNo := 1
::lFirstPageForm := .f.         // Formular 1. Seite noch nicht gedruckt - form 1. page not printed
::PrintForm() 
...

*-------------------------------------------------------------
METHOD _HBPrinter:NewPage()
    local uReturn := SELF
    if IsMethod(::oPS:device(),"NewPage")
       if ::IsPageToPrint() .and. ! ::IsThisLastPage() // kein Vorschub bei letzter Seite, wegen
          uReturn := ::oPS:device():NewPage()          // no NewPage an last page, because of
       endif                                           // enddoc()
    endif
    ::nPageNo++
return uReturn
Wenn es in eigene PDFs soll, muss man in Print den Druckjob beenden und erneut mit neuem Namen starten.
Das habe ich zwar noch nicht gemacht, sollte aber gehen.
Gruß
Hubert

Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 322
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen

Re: HB_PRINTER und Serienbrief

Beitrag von Wolfgang_B » Sa, 18. Jan 2020 16:34

Hallo Hubert,
erstmal vielen Dank!!!

Druck geht auf Papier. Den Druckerdialog brauche ich zur Auswahl des Druckers, da es normalerweise bei meinen Kunden keinen Standarddrucker gibt.

Im Prinzip funktionierts jetzt schon mal. Es gibt noch ein paar Feinheiten, die noch nicht so wie gewollt funktionieren; z.B. die Druckvorschau haut nicht hin. Die Ist aber auch nicht notwendig. Kann man im Druckerdialog den Punkt ausblenden? Je mehr ich mich mit Deiner Klasse beschäftige, desto begeisterter bin ich davon. Echt "klasse"!
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15008
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: HB_PRINTER und Serienbrief

Beitrag von brandelh » Sa, 18. Jan 2020 17:27

Wenn du nur die Druckerauswahl möchtest, kannst du auch den XbpPrinterDialog() nutzen und die Rückgabe an HBPrinter übergeben.
Da habe ich auch ein Beispiel bei, dann wird auch immer der Standarddruckerauswahlbildschirm mit Zugriff auf die Eigenschaften etc. verwendet.

PS: natürlich kannst DU in diesem einen Programm einen Schalter einbauen um die Vorschau zu verhindern (disable oder hide)
Gruß
Hubert

Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 322
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen

Re: HB_PRINTER und Serienbrief

Beitrag von Wolfgang_B » Mo, 20. Jan 2020 10:06

Hubert, alles klar. Vielen Dank ...
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.

Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 322
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Wolfgang_B » Mo, 20. Jan 2020 21:21

Hallo Werner,
jetzt hab ich erst verstanden, was Du gemeint hast ... :banghead:
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1729
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Werner_Bayern » Di, 21. Jan 2020 15:03

Wir Bayern sind halt nicht immer die Schnellsten :lol:
es grüßt euch

Werner

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13661
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Jan » Di, 21. Jan 2020 15:54

... wie gut das Wolfgang gar kein Bayer ist ... :-D

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 322
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Wolfgang_B » Di, 21. Jan 2020 17:04

:D :D
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1729
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Werner_Bayern » Di, 21. Jan 2020 21:30

Man sieht sich in Regensburg! :occasion5:
es grüßt euch

Werner

Antworten