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

Moderator: Moderatoren

Antworten
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

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

Beitrag 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.
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

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

Beitrag 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
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag 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
Gruß
Klaus
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

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

Beitrag 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
Antworten