Clipper/FiveWin - Mejoras visuales en los REPORT

 
Vista:

Mejoras visuales en los REPORT

Publicado por lorenzo (180 intervenciones) el 22/06/2006 12:54:32
Hola compañeros....

Sería posible alternar colores (blanco y gris, por ejemplo) en las líneas de un
Report oreport preview......
column ....
activate report oreport....

Es que tengo reportes muy extensos con muchas columnas y pensé que sería mejor visualmente el alternar colores en cada línea de impresión (al estilo de los Listbox)

¿ Es posible ? En caso afirmativo ¿podrías mostrar un pequeño ejemplo ?

Mil gracias.
Lorenzo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Mejoras visuales en los REPORT

Publicado por Gabirle Pascual (913 intervenciones) el 24/06/2006 05:09:16
buaaaaa....

Eso si es posible, pero tienes que entender bastante del motor de informes de FW, voy a ver si puedo ser bastante explicito y resumir el tema:

Primero tienes que crear TODAS las columnas del informe con la clausula SHADOW

COLUMN DATA loquequieras PICTURE..... SHADOW
COLUMN DATA otracosa PICTURE .... SHADOW

El truco consiste en ir quitando y poniendo la clausula SHADOW cada vez que imprimes un renglon del informe.

Para lograr esto, tienes que "interceptar" un evento de creacion del informe que es ON STARTLINE y en ese evento llamar a una funcion que verifique el estado de la data ::lShadow de cada columna y la apague o prenda segun el caso.

El evento ON STARTLINE se ejecuta justo antes de comenzar a imprimir cada linea de informe, y es en ese momento cuando debemos activar o desactivar las clausulas SHADOW

Para pillar el evento, debes hacerlo en el ACTIVATE del mismo:

ACTIVATE REPORT oRep WHILE !(CATCUE)->(EOF());
FOR (CATCUE)->cuenta <> cResEjer;
ON STARTLINE Sombras(oRep)

La siguiente funcion llamada Sombras, recibe el objeto reporte como parametro , lo mira y si la primer columna tiene la clausula ::lShadow a verdadero, entonces TODAS las columnas son cambiadas a .F., por el contrario, si es .F. todas las columnas van a verdadero:

Func Sombras(oReport)
Local nVeces
IF oReport:aColumns[1]:lShadow
FOR nVeces := 1 TO Len(oReport:aColumns)
oReport:aColumns[nVeces]:lShadow := .F.
NEXT
ELSE
FOR nVeces := 1 TO Len(oReport:aColumns)
oReport:aColumns[nVeces]:lShadow := .T.
NEXT
ENDIF
RETURN NIL

Y listo, es un pelin complicado, sin embargo yo he hecho verdaderas virguerias con el motor de informes, sabiendolo manejar es impresionante la cantidad de cosas que puedes hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar