Cambiar color de fondo de una linea en un vertical normal (AvaQs)
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.