Page 1 of 1

Sustituir RPreview por Reader

PostPosted: Wed May 21, 2014 5:20 pm
by Sebastián Almirón
Hola a todos,

En un proceso de mejorar todo lo relacionado con la impresión en mis programas, he modificado la function PrinEnd (De printer.prg), y le he añadido estas líneas a continuación del if oPrinter:lMeta del comienzo:

oPrinter:cfile := GetEnv("TMP")+'\TMP'+alltrim(str(nRandom()))+'.pdf'
do whil file(oPrinter:cfile)
oPrinter:cfile := GetEnv("TMP")+'\TMP'+alltrim(str(nRandom()))+'.pdf'
enddo

Me funciona muy bien, pero tengo que buscar la manera de indicarle al Reader la impresora en la que hay que imprimir el documento (la misma que tenga configurada mi programa para ese tipo de documento), y no que salga la predeterminada, ya que el usuario tiene varias a su disposición y casi siempre se equivoca al elegirla. ¿Alguna idea ?

Saludos

Re: Sustituir RPreview por Reader

PostPosted: Wed May 21, 2014 5:46 pm
by sysctrl2
a que te refieres con READER ?
es ADOBE READER ?

SALUDOS.

Re: Sustituir RPreview por Reader

PostPosted: Wed May 21, 2014 6:18 pm
by karinha

Re: Sustituir RPreview por Reader

PostPosted: Wed May 21, 2014 6:25 pm
by elvira
Sebas,

Entonces, ¿conviertes los emf a pdf y los muestras con el Adobe?.

Creo que entonces en el código de tprinter hay que hacer más cambios.

Aprovechando, por favor ¿has avanzado algo con el myreport?.

Muy agradecida :D :roll: :roll:

Re: Sustituir RPreview por Reader

PostPosted: Thu May 22, 2014 10:36 am
by lucasdebeltran
Sebastián,

Antes de llamar al Acrobat guardas la impresora por defecto, la cambias a la que necesites y tras ello restauras la impresora por defecto original.

Por ejemplo:

Code: Select all  Expand view
   // Leo impresora por defecto
    cPrinter := GetProfString( "windows", "device" , "" )

    // cambio impresora elegida
    WriteProfString( "windows", "device", cNewPrinter )
    SysRefresh()
   
    //PrinterInit()

...

Llamada a WinExec para Acrobat Reader

    // restauro impresora original
    WriteProfString( "windows", "device", cPrinter  )

Re: Sustituir RPreview por Reader

PostPosted: Thu May 22, 2014 3:29 pm
by Sebastián Almirón
Gracias Lucas, va ser verdad de cuatro ojos ven más que dos. :D

A falta de chequearlo más a fondo, por si da algún problema, solo con añadir las cuatro líneas indicadas, se sustituye el Rpreview por el visor de PDF en todas las vistas previas de nuestro programa, en realidad la clase TPrinter ya está preparada para ello con solo indicarle que la propiedad cFile tiene la cadena pdf en algún lugar, lo que hacen estas líneas es forzar eso.

Elvira, las modificaciones a MyRpt estoy en ello, cuando tengo tiempo, espero tener una versión estable en breve.

Saludos