Seite 1 von 1

FRAX, Drucker wird über Setprinter() nicht gesetzt?

Verfasst: Mo, 29. Jun 2009 16:50
von Lewi
Hi Folks,
im Zusammenhang mit FRAX bin ich über folgendes Problem gestolpert:

Die Ausgabe auf einen Drucker läßt sich über oFrax:PrintOptions:SetPrinter(cPrinter) steuern wobei cPrinter der entsprechene Druckername ist. Wenn allerdings in einem vorherigen Druck über den Druckerdialog ( PrintOptions:SetShowDialog(.T.)) ein Druck auf einen anderen als (cPrinter) erfolgte, dann wird bei mir der Drucker cPrinter nicht angesprochen, sondern der, der über einen vorherigen Druckdialog ausgewählt wurde.
Kann jemand das Problem nachvollziehen?

Hier ein Auszug meiner Druckroutine:

Code: Alles auswählen

Func FraxOutput( cPrinter, cFile ) 

         IF ! empty( cPrinter )  // einen anderen, als den Windows Standard-Drucker nutzen
            _FRAXOBJECT:PrintOptions:ClearOptions()
           _FRAXOBJECT:PrintOptions:SetPrinter(cPrinter)
//           msgbox("Outputprinter: "  +cPrinter )
         ENDIF
         _FRAXOBJECT:LoadFromFile( cFile )
         _FRAXOBJECT:PrepareReport()
         usw..
Return NIL
Auch ein :Clearoptions() setzt einen über den FRAX-Druckerdialog gewählten Drucker nicht zurück, d.h., es wird nicht der Windows Standarddrucker herangezogen.

Re: FRAX, Drucker wird über Setprinter() nicht gesetzt?

Verfasst: Di, 30. Jun 2009 7:40
von Muecke
Hallo Olaf,

Ich mach dies bei Word so, damit ich dies mit dem Drucker in den Griff bekomme

Code: Alles auswählen

   IF ! empty( cPrinter )
                  cOldPrinter := oWord:Activeprinter
                  oWord:Activeprinter := cPrinter
           ENDIF

         ..............
         ..........
         ......


   IF ! empty( cOldPrinter)
      oWord:Activeprinter := cOldPrinter                             // setzen auf standard printer
   ENDIF
So habe ich immer den Drucker der ich will.
Gibt es da bei Frax was, damit man den Printer abfragen kann?

Gruss Thomas

Re: FRAX, Drucker wird über Setprinter() nicht gesetzt?

Verfasst: Di, 30. Jun 2009 7:47
von Koverhage
Hi,

in Deinen Beispielen und Vorträgen ist die Reihenfolge glaube ich etwas anders ;-)
Ich mache es grundsätzlich so, d.h. erst das Dokument laden und dann die Druckparameter setzen.
Denke mal wenn Du die Reihenfolge veränderst sollte es gehen.


FrPrn:LoadFromFile(cDocData + cForm)

FrPrn:PrepareReport()
FrPrn:PrintOptions:SetPrinter(cDrucker)
FrPrn:PrintOptions:SetCopies(nCopies)
FrPrn:PrintOptions:SetShowDialog(lForce)
FrPrn:ReportOptions:SetName(cPrevName)

FrPrn:PreviewOptions:SetButtons(FR_PB_PRINT + ;
FR_PB_LOAD + ;
FR_PB_SAVE + ;
FR_PB_ZOOM + ;
FR_PB_FIND + ;
FR_PB_OUTLINE + ;
FR_PB_PAGESETUP + ;
FR_PB_TOOLS + ;
FR_PB_NAVIGATOR + ;
FR_PB_EXPORTQUICK )

if lVorSchau
FrPrn:ShowReport() // Preview-Modus
else
FrPrn:Print() // ohne Vorschau
endif

Re: FRAX, Drucker wird über Setprinter() nicht gesetzt [Erledig]

Verfasst: Di, 30. Jun 2009 13:27
von Lewi
Ich mache es grundsätzlich so, d.h. erst das Dokument laden und dann die Druckparameter setzen.
Denke mal wenn Du die Reihenfolge veränderst sollte es gehen.
Bingo!
Dies war tatsächlich das Problem. Wenn zuerst das Formular und danach der Drucker gesetzt wird, treten keine Schwierigkeiten auf.

Code: Alles auswählen

Func FraxOutput( cPrinter, cFile )
   _FRAXOBJECT:LoadFromFile( cFile )
   _FRAXOBJECT:PrepareReport()
   IF ! empty( cPrinter )  // einen anderen, als den Windows Standard-Drucker nutzen
      _FRAXOBJECT:PrintOptions:ClearOptions()
      _FRAXOBJECT:PrintOptions:SetPrinter(cPrinter)
   ENDIF
   usw..
Return NIL
Vielen Dank für den Hinweis!
Gruß, Olaf