columna con saldos negativos en otro color

270 views
Skip to first unread message

marcelo lopez

unread,
Feb 1, 2012, 6:48:16 PM2/1/12
to publicesvfoxpro
Hola :
 
se como colorear una fila completa con dynamcibackcolor , pero como puedo hacer si en una columna en particular ,la cual en su controlsource tengo enlazado un campo de un cursor (saldo ) . ,colorear distinto los que tengan saldo < 0 .intente poner en las propiedad dynamicbackcolr  de la columna : "iif (saldo < 0 ,rgb (255,0,0 ) , rgb ( 255,255,255) " , pero no tuve resultados (no me da error ,pero no funciona ).
desde ya gracias

Yvan Carranza

unread,
Feb 1, 2012, 6:53:07 PM2/1/12
to publice...@googlegroups.com
es que te falta cerrar un parentesis.

Irlandes 1960

unread,
Feb 1, 2012, 9:54:02 PM2/1/12
to publice...@googlegroups.com
Y proba de usar el dynamickforecolor (color del texto) que queda mas gráfico que el backcolor (color del fondo) 
.dynamickforecolor  = "iif( saldo < 0,255,0)"


marcelo .

unread,
Feb 2, 2012, 12:36:19 PM2/2/12
to publice...@googlegroups.com
Gracias por la ayuda .
 
de todas maneras ,no se  porque no lo puedo hacer andar para una columna .
 
en el init del grid puse
 
this.grid.column1.controlsource = 'campo.valor'
 
this.grid.column1.dynamicbackcolr = ' iif (valor < 0 ,rgb (255,0,0 ) ,rgb ( 255,255,255 ) ) '
y no hay caso.ingreso un valor negativo en dicha columna ,y cuando paso de celda ,no me cambia el color de fondo
 
saludos


 
2012/2/1 Irlandes 1960 <irland...@gmail.com>

Irlandes 1960

unread,
Feb 2, 2012, 12:43:54 PM2/2/12
to publice...@googlegroups.com
ojo, es dynamibackcolOr  quizás un error de transcripcion.
Otro tema es que podes no estar reconociendo el campo valor. Agrega el alias, o sea 
this.grid.column1.dynamicbackcolOr = 'IIF(CAMPO.VALOR < 0, 255 ,rgb(255,255,255))'

Nota: la función rgb retorna un valor numérico, donde 255 es rojo y 0 es negro, por eso en el ejemplo omito la función y escribo directamente el resultado, que para este caso es mas fácil

Igualmente te recomiendo para el ejemplo usar el Forecolor que cambia el color del texto escrito y no del fondo, ya que los fondos en rojo con texto negro son difíciles de leer y resultan muy agresivos a la vista.

Maggi Fretes

unread,
Feb 2, 2012, 3:19:48 PM2/2/12
to publice...@googlegroups.com
Hola Marcelo....yo por ejemplo tengo por filas los colores, verde si es positivo, rojo si es negativo, blanco y no tiene valor cero..espero te sirva el código...
Este código lo pongo en el init del grid:

this.SetAll("dynamicbackcolor","iif(articulobuscar.saldo_stock>=1,RGB(185,233,150),;
IIF(articulobuscar.saldo_stock<=-1,RGB(255,128,64),;
IIF(articulobuscar.saldo_stock=0,RGB(255,255,255), '')))")




Date: Thu, 2 Feb 2012 14:36:19 -0300
Subject: Re: [vfp] columna con saldos negativos en otro color
From: ciclo...@gmail.com
To: publice...@googlegroups.com

marcelo lopez

unread,
Feb 3, 2012, 7:17:41 AM2/3/12
to publice...@googlegroups.com
Maggi :
 
Gracias por tu ayuda .lo haré para toda la fila nomas . ya que no puedo conseguir hacerlo solo para la columna de saldo solamente .
 
gracias

Guillermo MDQ

unread,
Feb 3, 2012, 8:59:42 AM2/3/12
to Comunidad de Visual Foxpro en Español
Marcelo, prueba este ejemplo, es lo que andas buscando:

****************
Public oForm
oForm = Createobject("myForm")
oForm.Show()

Define Class myForm As Form

DataSession = 2
Height = 400
Width = 600
Add Object myGrid As Grid With ;
Height = 400, Width = 600, RecordSource="datos"

Procedure Load

Create Cursor Datos (codigo N(3),nombre c(30),col1 N(1),col2
N(1),col3 N(1))

Insert Into Datos Values (1,"Juan Perez",1,3,5)
Insert Into Datos Values (2,"Ana Pardos",2,4,6)
Insert Into Datos Values (3,"Luis Garcia",3,5,1)
Insert Into Datos Values (4,"Elisa Sanjuan",4,6,2)
Insert Into Datos Values (5,"Alberto Casañal",5,1,3)
Insert Into Datos Values (6,"Julia Martin",6,2,4)
GOTO top

Endproc

Procedure Init

This.myGrid.Column1.DynamicBackColor="thisform.MyColor(codigo)"
This.myGrid.Column3.DynamicBackColor="thisform.MyColor(col1)"
This.myGrid.Column4.DynamicBackColor="thisform.MyColor(col2)"
This.myGrid.Column5.DynamicBackColor="thisform.MyColor(col3)"

Endproc

Procedure MyColor
Lparameters tnvalor
lnColor = 0xFFFFFF && Blanco por default
Do Case
Case tnvalor = 1
lnColor = Rgb(100,100,150)
Case tnvalor = 2
lnColor = Rgb(255,255,0)
Case tnvalor = 3
lnColor = Rgb(255,100,0)
Case tnvalor = 4
lnColor = Rgb(255,0,0)
Case tnvalor = 5
lnColor = Rgb(0,255,0)
Case tnvalor = 6
lnColor = Rgb(0,0,255)
Endcase
Return lnColor
Endproc


Procedure Unload
Close Tables All
Close Databases All
Endproc

Enddefine
********************

Saludos
Guillermo


Maggi Fretes

unread,
Feb 3, 2012, 10:15:08 AM2/3/12
to publice...@googlegroups.com
Hola Marcelo....entonces si solo quieres de una columna en especial, debes poner también en el Init de tu grid esto, ya probe y sale perfecto sin errores..Risa:

this.column4.DynamicBackColor = "iif(articulobuscar.saldo_stock>=1,RGB(185,233,150),;
IIF(articulobuscar.saldo_stock<=-1,RGB(255,128,64),;
IIF(articulobuscar.saldo_stock=0,RGB(255,255,255), '')))"




Date: Fri, 3 Feb 2012 09:17:41 -0300

Subject: Re: [vfp] columna con saldos negativos en otro color

marcelo lopez

unread,
Feb 3, 2012, 7:25:06 PM2/3/12
to publice...@googlegroups.com
Maggi  ( creo que por tu user de mail sos mujer )  : sos una genia !! gracias ! lo pude lograr !! gracias a los demas por enseñarnos a los que sabemos menos !!! un abrazo !!!

Maggi Fretes

unread,
Feb 4, 2012, 10:35:16 AM2/4/12
to publice...@googlegroups.com
Si Marcelo jijijiji, estas en lo correcto, que bueno entonces que te haya servidooo...para eso estamos para ayudarnosRisa

Maggi


Date: Fri, 3 Feb 2012 21:25:06 -0300
Reply all
Reply to author
Forward
0 new messages