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

Moderator: Moderatoren

Antworten
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 786
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg

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

Beitrag von Lewi » Mo, 29. Jun 2009 16:50

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.

Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 540
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Kontaktdaten:

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

Beitrag von Muecke » Di, 30. Jun 2009 7:40

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

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2084
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

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

Beitrag von Koverhage » Di, 30. Jun 2009 7:47

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
Gruß
Klaus

Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 786
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg

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

Beitrag von Lewi » Di, 30. Jun 2009 13:27

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

Antworten