Xailer y Crystal Reports, casi listos
Publicado: Sab Jun 10, 2006 2:55 am
Hola a todos:
Para todos aquellos que lo estaban esperando, les informo que finalmente
he podido hacer funcionar Crystal Reports con Xailer, usando la interfaz
OLE de Crystal.
Como funciona:
La cosa es muy simple, solo tenemos que hacer esto:
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS TForm1
LOCAL oCrystal, oReporteCrystal
oCrystal := TOLEAUTO():New("Crystal.CRPE.Application")
oReporteCrystal := oCrystal:OpenReport(".impaage.rpt")
oReporteCrystal:Preview("Crystal & Xailer",0,0,200,200,;
16777216 + 131072 + 65536 + 524288,;
::Handle)
RETURN Nil
Toda la gracia (y el problema que me esta volviendo loco) esta en el
metodo PREVIEW, que es el que despliega la ventana del motor de vista
previa de Crystal, segun la documentacion, el metodo preview recibe:
object:Preview( Title, Left, Top, Width, Height, Style, ParentWindow)
Las partes mas interesantes son los 2 utimos parametros, hablare en un
principio del ultimo parámetro porque ese no me da ningun problema. Si
nosotros queremos hacer a la ventana de Crystal "hija" de nuestra
aplicacion Xailer, simplmentente le ponemos como parametro ::HANDLE o el
Handle del formulario principal, esto hara que la ventana de Crystal sea
"hija" de nuestro formulario principal (no olviden hacer el formulario
principal MDIFRAME, aunque tambien funciona con formularios "normales").
El problema que tengo, y lo unico que me falta para hacer funcionar
Crystal con Xailer es el p. STYLE de los c. de la ventana Crystal, si no
se pone ningun parametro en el style, se pinta la ventana del motor de
vista previa de Crystal como hija del formulario principal, pero
desaparece inmediatamente (ya me habia pasado algo parecido con el
formulario Preview del motor de reportes de Xailer, cuando se trabaja en
una aplicacion MDI y lo solucione haciendo modal el reporte)
El caso es que estoy totalmente loco con el STYLE de la ventana, supongo
que haciendola modal se podria presentar perfectamente, asi que me he
puesto a sumarle las constantes de todos los estilos conocidos de
ventana conocidos, y aun así sigue sin quedarse quieta.
Para presentar el informe en pantalla y evitar que desaparezca nada mas
desplegar la ventana, he tenido que poner un MsgInfo() para detener la
ejecucion del programa Xailer, y entonces el informe se muestra
perfectamente en su ventana de vista previa y como una ventana hija de
la aplicacion Xailer, sin embargo, no se puede interactuar con dicha
ventana porque el Msgfinfo() impide que se pueda tocar (es modal) en
cuanto se cierra el MsgInfo() se cierra automaticamente la ventana de
vista previa.
Supngo que algo tiene que ver el estilo de la ventaa de Crystal, asi que
alguien puede hecharme un cable con esto, todos los que trabajamos con
Crystal seremos muy felices.
Anexo ejemplo
Saludos
Rene Flores
http://www.ciber-tec.com
--
Para todos aquellos que lo estaban esperando, les informo que finalmente
he podido hacer funcionar Crystal Reports con Xailer, usando la interfaz
OLE de Crystal.
Como funciona:
La cosa es muy simple, solo tenemos que hacer esto:
METHOD Menu1Item1_1Click( oSender, oMenu ) CLASS TForm1
LOCAL oCrystal, oReporteCrystal
oCrystal := TOLEAUTO():New("Crystal.CRPE.Application")
oReporteCrystal := oCrystal:OpenReport(".impaage.rpt")
oReporteCrystal:Preview("Crystal & Xailer",0,0,200,200,;
16777216 + 131072 + 65536 + 524288,;
::Handle)
RETURN Nil
Toda la gracia (y el problema que me esta volviendo loco) esta en el
metodo PREVIEW, que es el que despliega la ventana del motor de vista
previa de Crystal, segun la documentacion, el metodo preview recibe:
object:Preview( Title, Left, Top, Width, Height, Style, ParentWindow)
Las partes mas interesantes son los 2 utimos parametros, hablare en un
principio del ultimo parámetro porque ese no me da ningun problema. Si
nosotros queremos hacer a la ventana de Crystal "hija" de nuestra
aplicacion Xailer, simplmentente le ponemos como parametro ::HANDLE o el
Handle del formulario principal, esto hara que la ventana de Crystal sea
"hija" de nuestro formulario principal (no olviden hacer el formulario
principal MDIFRAME, aunque tambien funciona con formularios "normales").
El problema que tengo, y lo unico que me falta para hacer funcionar
Crystal con Xailer es el p. STYLE de los c. de la ventana Crystal, si no
se pone ningun parametro en el style, se pinta la ventana del motor de
vista previa de Crystal como hija del formulario principal, pero
desaparece inmediatamente (ya me habia pasado algo parecido con el
formulario Preview del motor de reportes de Xailer, cuando se trabaja en
una aplicacion MDI y lo solucione haciendo modal el reporte)
El caso es que estoy totalmente loco con el STYLE de la ventana, supongo
que haciendola modal se podria presentar perfectamente, asi que me he
puesto a sumarle las constantes de todos los estilos conocidos de
ventana conocidos, y aun así sigue sin quedarse quieta.
Para presentar el informe en pantalla y evitar que desaparezca nada mas
desplegar la ventana, he tenido que poner un MsgInfo() para detener la
ejecucion del programa Xailer, y entonces el informe se muestra
perfectamente en su ventana de vista previa y como una ventana hija de
la aplicacion Xailer, sin embargo, no se puede interactuar con dicha
ventana porque el Msgfinfo() impide que se pueda tocar (es modal) en
cuanto se cierra el MsgInfo() se cierra automaticamente la ventana de
vista previa.
Supngo que algo tiene que ver el estilo de la ventaa de Crystal, asi que
alguien puede hecharme un cable con esto, todos los que trabajamos con
Crystal seremos muy felices.
Anexo ejemplo
Saludos
Rene Flores
http://www.ciber-tec.com
--