Page 1 of 2

Impresión ( prev32.dll ) con FWH 7.09

Posted: Fri Sep 14, 2007 10:58 am
by Julio Cepeda
Al compilar los programas que ya tengo escritos y que vienen corriendo perfectamente compilados con la version anterior de FWH, me ocurre lo siguiente:

Cuando ejecuto cualquier opción que imprima con previsualización, en lugar de aparecer una ventana MDI como aparecía antes ademas de la de la aplicación, ahora me aparece una ventana HIJA que se ubica detrás del diálogo y con dimensiones reducidas y la previsualizacion distorsionada.

Si algún compañero sabe que hay que hacer para que no se produzca esto se lo agradeceria.

Saludos

Posted: Fri Sep 14, 2007 12:04 pm
by Antonio Linares
Julio,

Estamos usando una nueva Clase TPreview que permite usar multiples previews simultaneamente.

Como se veía antes la ventana de preview, maximizada ?

Posted: Fri Sep 14, 2007 2:04 pm
by Julio Cepeda
Sí salía maximizada y en ventana independiente, (MDI ), aunque al cerrar el programa, también se cerraba esta si había alguna abierta.

También cuando había alguna ventana de impresión abierta y se intentaba abrir otra salía un MsgStop diciendo "Ya existe una ventana de visualización", por si esto te da alguna pista.

Muchas gracias Antonio, saludos.

Posted: Fri Sep 14, 2007 2:11 pm
by Antonio Linares
Julio,

Una ventana independiente no es una ventana MDI. MDI es "multiple display interface", algo asi como interface de multiples ventanas.

En source\classes\rpreview.prg tienes este código. Prueba a añadirle MAXIMIZED en _:

Code: Select all

   if oWndMain != nil .and. Upper( oWndMain:ClassName() ) == "TMDIFRAME"
      DEFINE WINDOW ::oWnd ;
         TITLE cTitle ;
         COLOR CLR_BLACK,CLR_LIGHTGRAY      ;
         ICON  oIcon                        ;
         VSCROLL HSCROLL MDICHILD MAXIMIZED
   else      
      DEFINE WINDOW ::oWnd FROM 0, 0 TO 24, 80  ;
         TITLE cTitle ;
         COLOR CLR_BLACK,CLR_LIGHTGRAY      ;
         ICON  oIcon                        ;
         VSCROLL HSCROLL MENU ::BuildMenu() MAXIMIZED
   endif      

Posted: Fri Sep 14, 2007 2:22 pm
by Julio Cepeda
Yo lo hago asi y me viene funcionando bien desde FWH de 16 bits

IF lPrevis
PRINT oPrn NAME "Impresión de facturas" PREVIEW
ELSE
PRINT oPrn NAME "Impresión de facturas"
EndIf

IF Empty( oPrn:hDC )
MsgStop( OemToAnsi( "­ No hay IMPRESORA para imprimir !" ))
Return NIL
EndIF

oPrn:SetCopies( nCopias )

oPrn:Setup()

...

La ventana ya aparece con este código tal y como viene en el ejemplo
TestPrn2.prg y ha funcionado siempre bien.

No se donde poner en este código esto que me dices.

Gracias y saludos

Posted: Fri Sep 14, 2007 2:48 pm
by Antonio Linares
Julio,

Me refiero a modificar source\classes\rpreview.prg

Posted: Fri Sep 14, 2007 3:12 pm
by Julio Cepeda
Yo no lo he hecho nunca eso a ver si he entendido.

Modifico source\classes\rpreview.prg y lo enlazo con mi programa como un módulo mas o hay que hacer alguna otra cosa ?

Nunca he modificado nada de lo que viene en el directorio C:\FWH
Yo miro la ayuda Fwcmd y escribo como viene ahí, no uso recursos, uso @ nRow, nCol ... si tengo alguna duda entro en FWH\samples y busco algo parecido a lo mío y lo copio.
Si necesito usar algún método o dato, miro la ayuda de fwclass y lo hago como viene allí. Hasta ahora me ha funcionado casi todo perfectamente.

Gracias y un saludo.

Posted: Fri Sep 14, 2007 5:33 pm
by Antonio Linares
Julio,

>
Modifico source\classes\rpreview.prg y lo enlazo con mi programa como un módulo mas o hay que hacer alguna otra cosa ?
>

Sí, es hacerlo como has dicho :-)

Posted: Sun Sep 16, 2007 8:33 am
by Julio Cepeda
Imposible Antonio, he probado de un sinfin de maneras y no lo consigo.

oPrn := TPreview():New()
oPrn := TPrinter():New( "Factura", .F., .T., , .T. )
oPrn := PrintBegin( "Factura", .F., .T., , .T. )

Yo no estoy muy ducho en esto de las clases y escribo todo como los ejemplos que trae FWH.

De momento seguiré compilando con la versión que tenía y si algun día encontramos una solución cambiare a la nueva.

Gracias y un saludo.

Posted: Sun Sep 16, 2007 8:53 am
by Antonio Linares
Julio,

Prueba con las librerías que te enviamos por email :-)

Posted: Mon Sep 17, 2007 6:52 am
by Antonio Linares
Julio,

Vuelve a descargar e instalar FWH 7.09 :-)

Posted: Mon Sep 17, 2007 7:20 am
by Julio Cepeda
Ya lo he descargado e instalado FWH y Harbour y sale lo mismo.

Alomejor es alguna cosa que hay que cambiar en el código en esta nueva versión, yo iré haciendo pruebas y si lo descubro te lo hago saber.

Gracias Antonio.

Posted: Mon Sep 17, 2007 7:25 am
by Antonio Linares
Julio,

La ventana de previsualización no sale maximizada ?

Tu ventana principal es MDI ?

Posted: Mon Sep 17, 2007 9:25 am
by Julio Cepeda
No no sale maximizada sale detrás del diálogo desde el que se la llama como pudiste observar en el BMP que te adjunté ayer por el correo. Además es una cosa muy rara porque sale debajo de la barra de herramientas alineada a la izquierda y arriba. Cuando intentas pinchar en ella para pasarla al frente, no te deja y el dialogo desde el que se la llama parpadea, es decir que hasta que no cierras el dialogo llamador no te deja hacer nada con la de previsualización, que una vez cerrado el dialogo llamador, si la maximizas, en lugar de cubrir toda la superficie de la pantalla, se queda dentro de la ventana principal del programa, entre la barra de herramientas y la barra de estado de la ventana principal de la aplicación.

En cuanto a la ventana principal de la aplicación el código que la genera es el siguiente:

DEFINE WINDOW oWnd MDI FROM 04, 10 TO 30, 90;
TITLE OemToAnsi( "Facturaci¢n PYME" ) ;
MENU Menu() ;
ICON oIcon ;
BRUSH oBrush
SET FONT OF oWnd TO oFont
SET MESSAGE OF oWnd TO ;
OemToAnsi('Facturaci¢n PYME Usuario = '+WNetGetUser());
TIME DATE KEYBOARD

DEFINE BUTTONBAR oBar _3D SIZE 37, 37 TOP OF oWnd
DEFINE BUTTON OF oBar FILENAME "bmps\bars\cascade.bmp" TOOLTIP ;
...

ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT ( Set( 7, cPathEm := Empresas( oWnd, @cNomEmp ) ), ;
lActivado := IF( Veri(), .T., ( .F., oWnd:End() ) ), ;
oWnd:cTitle := cNomEmp + VERSION ) ;
VALID ( .NOT. lActivado .OR. MsgYesNo( "¿ Realmente desea salir ?", "Elija una opción" ) )

Que como ves si es MDI.

Gracias y saludos.

Posted: Mon Sep 17, 2007 9:37 am
by Antonio Linares
Julio,

Al implementar la nueva clase TPreview hemos considerado que si la ventana principal es MDI entonces la preview debería ser MDICHILD para poder tener varias abiertas simultaneamente, por eso sale debajo del diálogo.

Podríamos modificarlo para que no salga como MDICHILD sino como una ventana aparte de la ventana principal. Es cuestión de modificar source\classes\rpreview.prg. Es solo quitar MDICHILD.