DynamicBackcolor / Metodo definir color

306 views
Skip to first unread message

Yvan Carranza

unread,
Apr 2, 2012, 12:21:36 PM4/2/12
to publice...@googlegroups.com
Buenos Dias Foro,
Intento hacer esto :
 
Thisform.GrdFlujo.&lcCampo..DynamicBackColor = "Thisformset.Return_Color('CR_FLUJO')"  
 
El problema es que no me hace caso, al parecer estoy obligado a llamar a una funcion de un Prg.. o hay alguna forma de que me llame a un metodo del formulario?.
 
Estoy prohibido de usar prgs.
 
Saludos
Yvan.
 
 

Walter R. Ojeda Valiente

unread,
Apr 2, 2012, 12:28:17 PM4/2/12
to publice...@googlegroups.com
No entiendo lo que quieres hacer.

¿Para qué necesitas las comillas dobles?

Saludos.

Walter.




Date: Mon, 2 Apr 2012 11:21:36 -0500
Subject: [vfp] DynamicBackcolor / Metodo definir color
From: yvan.c...@gmail.com
To: publice...@googlegroups.com

Héctor Bernal

unread,
Apr 2, 2012, 12:31:09 PM4/2/12
to publice...@googlegroups.com
Hola,

Buen día. El siguiente código muestra la forma en que lo hago y que funciona en las versiones VFP desde la 5 hasta la 9.

*!* Esta es una variable pública que defino en mi programa principal. Esto para que en una pantalla de configuración, el usuario 
*!* pueda elegir el color que desee

gcColorGridColumn = "3636352"   && valor inicial que le he asignado


Esto va en el Init del grid.

*!*
*!* Creo una nueva propiedad en el Form, la cual he llamado Registro.
*!*
Thisform.Registro = RECNO()
This.SetAll("DynamicBackcolor", "IIF(RECNO()=Thisform.Registro,"+gcColorGridColumn+",IIF(RECNO()%2 = 0,RGB(235,235,240), RGB(255,255,255)))","Column")
This.SetAll("DynamicForecolor", "IIF(RECNO()=Thisform.Registro,RGB(255,255,255), RGB(0,0,0))","Column")
This.SetAll("DynamicFontBold", "RECNO()=Thisform.Registro","Column")


*!*
*!* Esto va en el método AfterRowColChange del grid.
*!*
LPARAMETERS nColIndex

Thisform.Registro = RECNO()
This.Refresh()


Espero te sea de ayuda en lo que quieres hacer.


Saludos desde México, D.F.

Luis Maria Guayan

unread,
Apr 2, 2012, 12:35:00 PM4/2/12
to publice...@googlegroups.com
Intenta con:

Thisform.GrdFlujo.&lcCampo..DynamicBackColor = "=Thisformset.Return_Color('CR_FLUJO')"

ó

Thisform.GrdFlujo.&lcCampo..DynamicBackColor = Thisformset.Return_Color('CR_FLUJO')

No me convence mucho allí el uso de macrosustictucion, si son varios campos, mira si no es mejor utilizar en el Init del Grid:

Thisform.GrdFlujo.SetAll("DynamicBackColor", "=Thisformset.Return_Color('CR_FLUJO')", "Column" )


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

TheNewInquirer

unread,
Apr 2, 2012, 12:39:27 PM4/2/12
to Comunidad de Visual Foxpro en Español
Si se quiere iluminar la linea de un grid, el Maestro Luis Maria me
pasó este ejemplo para version 8 y 9:

USE (HOME(2) + "\Northwind\Customers.dbf") IN SELECT("Customers")
NOUPDATE
loForm = CREATEOBJECT("Form")
loForm.WINDOWSTATE = 2
loForm.ADDOBJECT("MiGrid","Grid")
WITH loForm.MiGrid
.HIGHLIGHTBACKCOLOR = RGB(0,128,0)
.HIGHLIGHTSTYLE = 2
.ALLOWCELLSELECTION = .F.
.RECORDSOURCE = "Customers"
.WIDTH = loForm.WIDTH
.HEIGHT = loForm.HEIGHT
.ANCHOR = 15
.VISIBLE = .T.
ENDWITH
loForm.SHOW(1)


Si lo quieres hacer manualmente, solo cambia los numeros del color en
las propiedades del grid:
Highlightbackcolor=0,128,0
Highlightstyle=2
Allowcellselection=.t. * Para que te deje cambiar el color de la celda
activa.
SelectedItemBackcolor= El numero de color RGB que desees como fondo en
tu celda activa.

Cabe aclarar que según la ayuda, si modificas los colores del Text del
grid, éste tendrá prioridad sobre los colores establecidos en el grid.

Solo con esas 4 propiedades podrás ver la línea iluminada del grid
perfectamente.

Saludos!

Yvan Carranza

unread,
Apr 2, 2012, 12:42:04 PM4/2/12
to publice...@googlegroups.com
Hola Walter,
 
.GrdFlujo.&lcCampo..DynamicBackColor = "IIF(IIF(ADDMAN='S',RGB(255,255,255),CODIGO='DF01',RGB(255,250,255),IIF(INLIST(CODIGO,'SL01','SL02','SL03','PB01','LF03'),RGB(136,196,255),IIF(TIPOMOV ='I' OR LEFT(CODIGO,2)= 'CH',RGB(220,220,220),IIF(!EMPTY(PERSONA) OR (VAL(SUBSTR(CODIGO,3,2)) > 1 ),RGB(241,228,228),RGB(255,255,255))))))"
 
Pero la cadena es muy larga, por eso intento ponerlo en una funcion.. con comillas o sin comillas no me hace caso
 
Thisform.GrdFlujo.&lcCampo..DynamicBackColor = "Thisformset.Return_Color('CR_FLUJO')"
 
Este el codigo de mi metodo que intento hacer funcionar
 
PARAMETERS P_CURSOR
cRetorno = "RGB(255,255,255)"
IF P_CURSOR = "CR_FLUJO" THEN
 IF CODIGO= 'DF01' THEN
  cRetorno = "RGB(255,250,255)"
 ELSE
  IF INLIST(CODIGO,'SL01','SL02','SL03','PB01','LF03') THEN  
   cRetorno = "RGB(136,196,255)"
  ELSE
     IF TIPOMOV ='I' THEN
        cRetorno = "RGB(220,220,220)"
     ELSE
       IF (!EMPTY(PERSONA) OR (VAL(SUBSTR(CODIGO,3,2)) > 1 AND CODIGO <> 'CH01' AND CODIGO <> 'CH02')) THEN
        cRetorno = "RGB(241,228,228)"
       ELSE
        cRetorno = "RGB(255,255,255)"      
       ENDIF      
     ENDIF
        ENDIF
    ENDIF    
ENDIF
RETURN cRetorno


El 2 de abril de 2012 11:21, Yvan Carranza <yvan.c...@gmail.com> escribió:

Yvan Carranza

unread,
Apr 2, 2012, 12:44:15 PM4/2/12
to publice...@googlegroups.com
Estimado Luis Maria,
Utilizo macrosustitucion, pq las columnas son creadas en tiempo de ejecución, y a la vez la condición solo e aplican a esas columas, a las demas columnas les aplico otra condición.
 
Gracias. voy a intentar con lo que me has pasado.

Walter R. Ojeda Valiente

unread,
Apr 2, 2012, 1:38:29 PM4/2/12
to publice...@googlegroups.com
Hola Yvan

El problema es que tu método devuelve un caracter ... y la función RGB() devuelve un número y la propiedad BackColor requiere de un número también.

Utiliza:

 cRetorno = RGB(255, 250, 255)

sin las comillas, y te funcionará sin problema.

Saludos.

Walter.




Date: Mon, 2 Apr 2012 11:42:04 -0500
Subject: [vfp] Re: DynamicBackcolor / Metodo definir color
From: yvan.c...@gmail.com
To: publice...@googlegroups.com

Yvan Carranza

unread,
Apr 2, 2012, 1:50:19 PM4/2/12
to publice...@googlegroups.com
Gracias walter. exactamente ese era el problema. Mientras buceaba encontré esto.
 
Reply all
Reply to author
Forward
0 new messages