Cambiar color de fondo de una linea en un vertical normal (AvaQs)

From codeWiki
Jump to: navigation, search

Por: VictorEspina


Contents

Introduccion

Es posible controlar el color del fondo de una celda particular en un Vertical Normal de AvaQs, usando la propiedad DynamicBackColor del objeto interno grdData.

Esta propiedad acepta una expresión que al ser evaluada determina el valor del color de fondo de una celda dada. Esta expresión puede hacer referencia a cualquier variable que exista dentro del alcance actual, asi como a cualquiera de las columnas del cursor que sirve de base al vertical.


Fondo interlineado

Aunque es posible control el color de cada celda en particular, el uso mas común para esta propiedad es el de controlar el color de una linea completa en el grid. Por ejemplo, si queremos aplicar un interlineado a un vertical, de modo que las filas pares se muestren en fondo blanco y las impares en fondo grid claro, necesitariamos un código parecido al siguiente:

#DEFVAR oVertical
oVertical:=FRM.Vertical.grdData
#FOR i:=1 TO oVertical.ColumnCount
 oVertical.Columns(i).DynamicBackColor:=[IIF(RECNO() % 2 = 0,RGB(255,255,255),RGB(128,128,128))]
#ENDFOR

Como vemos, la expresión determina si la fila es par o impar verificando que el resto de la division del nro. de la fila (en este caso el nro. del registro en el cursor) entre dos sea igual a cero, y utiliza un IIF() para devolver el color adecuado para cada caso. Esta expresión se evalua en cada una de las columnas del vertical (#FOR - #ENDFOR) y esto logra el efecto de que las lineas enteras cambien de color.


Color segun el estatus

Otro uso frecuente es el de asignar un color específico a una línea segun su estatus o condición. Por ejemplo, si tenemos un vertical que muestra una lista de facturas, podemos indicar que aquellas facturas anuladas se muestren en rojo, las canceladas se muestren en fondo verde y las pendientes en fondo normal (blanco):

#DEFVAR oVertical,nRojo,nVerde,nBlanco
oVertical:=FRM.Vertical.grdData
nRojo:=RGB(255,128,128)
nVerde:=RGB(128,255,128)
nBlanco:=RGB(255,255,255)

#FOR i:=1 TO oVertical.ColumnCount
 oVertical.Columns(i).DynamicBackColor:=[IIF(status='ANULADO',nRojo,;
                                         IIF(statuscobro='COBRADO',nVerde,nBlanco))]
#ENDFOR


Donde poner el código

El codigo para configurar el coloreado de las lineas de un vertical debe colocarse en el evento Iniciar de la forma, para que asi el vertical se muestre correctamente al mostrarse el formulario por primera vez. No se puede colocar en el evento Iniciar del vertical mismo, pues en ese momento aun no se ha asignado el cursor de origen y se generaria un error al evaluarse la expresion indicada en DynamicBackColor.

Esta técnica también puede ser aplicada a verticales normales.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox