Seite 1 von 1

Seite 3 von 3 ? [erledigt]

Verfasst: Mi, 09. Sep 2009 21:19
von AUGE_OHR
hi,

ich drucke über XbpPrinter meine Rechnungen. Nun fragte man mich ob man auch die Seite 3 von 3 drucken könnte ... ich drucke immer alles von einer Rechnung.

wie kann ich den eine Abfrage einbauen "welche" Seiten man drucken will ?
wenn ich den :Dialog benutzte "wirkt" es doch auf "alle" Rechnungen, aber ich will nur von der Rechnung 1234 die Seite 3 von 3.

p.s. da ich "variabel" drucke weiss ich "vorher" ja nicht wie viele Seiten es werden ...

Re: Seite 3 von 3 ?

Verfasst: Mi, 09. Sep 2009 23:31
von brandelh
Hi,

das Problem hatte ich bei meiner Druckerklasse auch ;-)

ich führe dort eine Instanzvariable die alle zu druckenden Seiten enthält (verschiedene Kombinationen möglich).
Bei jeder Druckmethode (Textzeile, Grafik, Memofeld etc.) wird geprüft ob auf der aktuellen Seite gedruckt werden darf.
Wenn nicht werden die GraFunktionen übersprungen, der Zeilenvorschub aber mit berechnet ... :D

Re: Seite 3 von 3 ?

Verfasst: Do, 10. Sep 2009 10:11
von Rolf Ramacher
Hi Jimmy,

ich hatte mal das gleiche Problem bei Listen. Meine Listen sind als Vorlage-----.RTF definiert. Diese lese ich eine - ersetze mit strtran und übergeben an Word mit ActiveX -

der Befehl sieht so aus: Vielleicht kannst du ihn gebrauchen.

Code: Alles auswählen

		aSeite:=oDlg:pageRangeSelected
		oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 )

Re: Seite 3 von 3 ?

Verfasst: Do, 10. Sep 2009 11:03
von AUGE_OHR
hi,

Danke für eure Antworten, ich habe eine "einfache" Lösung" gefunden :

Zum GUI Drucken brauche ich immer eine Presspace ... und den "lenke" ich nun bei Bedarf an die Preview weiter.

C:\ALASKA\XPPW32\Source\samples\solution\Preview\Preview.prg
allerdings habe ich die beiden Methoden :

Code: Alles auswählen

PROTECTED:
*   METHOD startDoc                // Drucken beginnen
*   METHOD endDoc                  // Drucken beenden

EXPORTED:
   METHOD startDoc                // Drucken beginnen
   METHOD endDoc                  // Drucken beenden
vom PROTECTED: in den EXPORTED: Bereich verschieben müssen um nun meine "Seiten" in die einzelnen GraSegXXX zu "drucken".

Nun muss man nur noch eine Methode

Code: Alles auswählen

METHOD XbpPreview:PageToPrint()
LOCAL i

   IF LEN( ::segments ) == 0
      RETURN self
   ENDIF
   ::startDoc()
   // hier wird nur die aktuelle Seite gedruckt.
   ::drawPage( ::nPagePos )
   ::endDoc()

RETURN self
hinzufügen (die andere druckt alle Seiten) und der User bekommt "die" Seite gedruckt die er gerade "sieht".