FoxPro/Visual FoxPro - color de fila en grilla

 
Vista:

color de fila en grilla

Publicado por fede (5 intervenciones) el 13/10/2007 13:57:32
chic@s necesito cambiar el color de una fila de la grilla osea es un form donde filtrop articulos x proveedor para saber el stock de cada uno, pero cada art tiene un campo stock minimo entonces verifico si el stockminimo es mayor a el stock entonces pinto la fila de rojo sino que sea de color negro ,me funciona con un registro pero cuando son mas no.
yo hago esto:
local costotot,costo2 as currency
store 0 to costo2
*CREATE CURSOR reporte(rubro c(4),subrubro c(4),subrubro2 c(4),subrubro3 c(4),codigo c(16),descripcio c(60))
*SELECT grilla
*set filter to
*ZAP
Thisform.grd.recordsource = " "
* ###
* Armar las condiciones que van sobre artic.
lccond=""
if!(empty(thisform.codart))
lccond=lccond + " A.codigo='"+alltrim(thisform.codart)+"'.AND."
endif
if!(empty(thisform.fabrica))
lccond=lccond + " A.fabri_rev='"+alltrim(thisform.fabrica)+"'.AND."
endif
if!(empty(thisform.familia))
lccond=lccond + " A.familia='"+alltrim(thisform.familia)+"'.AND."
endif
if!(empty(thisform.rubro))
lccond=lccond + " A.rubro='"+alltrim(thisform.rubro)+"'.AND."
endif
if!(empty(thisform.subrubro))
lccond=lccond + " A.subrubro='"+alltrim(thisform.subrubro)+"'.AND."
endif
if!(empty(thisform.subrubro2))
lccond=lccond + " A.subrubro2='"+alltrim(thisform.subrubro2)+"'.AND."
endif
if!(empty(thisform.subrubro3))
lccond=lccond + " A.subrubro3='"+alltrim(thisform.subrubro3)+"'.AND."
endif
if!(empty(thisform.proveedor))
lccond=lccond + " A.proveedor='"+alltrim(thisform.proveedor)+"'.AND."
endif

IF !EMPTY(lccond)
lccond = LEFT(lccond,len(lccond)-5)
lccond = " AND " + lcCond
ENDIF
*lcEx = "SET FILTER TO " + lccond

lcfiltro = ""
lcsq = ""
*!* *IF Thisform.tipo.value = 2
*!* IF !EMPTY(Thisform.de_articulo.value) and !EMPTY(Thisform.a_articulo.value)
*!* lcsq = "WHERE BETWEEN(codigo,Thisform.de_articulo.value,Thisform.a_articulo.value) "
*!* lcfiltro = "Desde Artículo : "+alltrim(Thisform.nom_de.value)+CHR(13)+"Hasta Artículo : "+alltrim(Thisform.nom_a.value)
*!* ENDIF
WAIT WINDOW ("Procesando...") NOWAIT
SELECT SUM(B.entrada-B.salidas) as stock,MAX(B.vence) as dvence,MAX(B.fecha) as ult,A.s1,A.s2,A.s3,A.codigo,a.descripcio,A.abrevia,A.rubro,A.subrubro,A.subrubro2,A.subrubro3,;
costo,peso,stock_mini FROM PRODUCTOS!artic A,PRODUCTOS!segstock B WHERE A.codigo==B.codigoar &lccond ;
ORDER BY a.descripcio GROUP BY A.codigo INTO CURSOR res

*SELECT MAX(fecha) AS ldult FROM PRODUCTOS!segstock WHERE RES.codigo==codigoar AND !EMPTY(entrada) AND origen="CO" INTO CURSOR ult
COUNT TO lnTot
SCAN
WAIT WINDOW ("Procesando... " + ALLTRIM(STR(RECNO())) + " de " + ALLTRIM(STR(lnTot))) NOWAIT

* SELECT grilla
* APPEND BLANK
* REPLACE codigo WITH RES.codigo
* REPLACE descripcio WITH RES.descripcio
* REPLACE stock WITH RES.stock
* REPLACE externo WITH RES.abrevia
* REPLACE S1 WITH RES.S1
** REPLACE S2 WITH RES.S2
* REPLACE S3 WITH RES.S3
* REPLACE vence WITH RES.dvence
* REPLACE fecha WITH ULT.ldult

Thisform.grd.recordsource = "res"
Thisform.grd.columns(1).controlSource = "res.codigo"
Thisform.grd.columns(2).controlSource = "res.descripcio"
Thisform.grd.columns(3).controlSource = "res.abrevia"
Thisform.grd.columns(4).controlSource = "res.stock"
select res
if res.stock_mini < res.stock
Thisform.grd.forecolor= RGB(128,0,0)
ThisForm.grd.Column4.Text1.forecolor= RGB(128,0,0)
else
Thisform.grd.forecolor= RGB(0,0,0)
ThisForm.grd.Column4.Text1.forecolor= RGB(0,0,0)
endif
Thisform.grd.columns(5).controlSource = "res.dvence"
Thisform.grd.columns(6).controlSource = "res.s1"
Thisform.grd.columns(7).controlSource = "res.s3"
Thisform.grd.columns(8).controlSource = "res.s3"
thisform.grd.columns(9).controlSource = "res.ult"
Thisform.filtro.interactivechange

endscan
WAIT WINDOW ("Proceso terminado") NOWAIT
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:color de fila en grilla

Publicado por Miguel (115 intervenciones) el 13/10/2007 17:12:32
utiliza este comando
SETALL

Form1.Grid1.SetAll("BackColor", RGB(255, 0, 0), "Column")

del ejemplo que adjunto, pinta en rojo las filas que tinen marcado el urgente y las modificaciones son en linea, puedes anidar mas condicionales si te es necesario.

thisform.grdSim_itm.setall("dynamicforecolor","iif(simurg=.t.,rgb(255,0,0),rgb(0,0,0))","column")

Slds,

Miguel
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