HB_PRINTER und Serienbrief [erledigt]

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

HB_PRINTER und Serienbrief [erledigt]

Beitrag von Wolfgang_B »

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.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: HB_PRINTER und Serienbrief

Beitrag von Werner_Bayern »

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

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HB_PRINTER und Serienbrief

Beitrag von Wolfgang_B »

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.
Mitglied der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: HB_PRINTER und Serienbrief

Beitrag von brandelh »

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: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HB_PRINTER und Serienbrief

Beitrag von Wolfgang_B »

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.
Mitglied der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: HB_PRINTER und Serienbrief

Beitrag von brandelh »

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: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HB_PRINTER und Serienbrief

Beitrag von Wolfgang_B »

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

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Wolfgang_B »

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

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Werner_Bayern »

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

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Jan »

... 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: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Wolfgang_B »

:D :D
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: HB_PRINTER und Serienbrief [erledigt]

Beitrag von Werner_Bayern »

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

Werner

<when the music is over, turn off the lights!>
Antworten