FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Xbrowse, cambio color texto y celda (Solucionado)
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Xbrowse, cambio color texto y celda (Solucionado)
Posted: Sat Aug 27, 2022 05:11 PM
Buenas

Tengo un xbrowse, al que aplico el efecto pijama:
Code (fw): Select all Collapse
                oLbx:bClrStd:= { || { CLR_BLACK, If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) ) } }


en una columna necesito que dependiendo de un valor, me pinte el texto en rojo y con otro valor, me pinte el fondo en rojo:
Texto en Rojo
Code (fw): Select all Collapse
        WITH OBJECT oLbx:aCols[ 8 ]
                :cTooltip := "(G)iro,(M)etalico"
                :bEditValue := {|| if((aAlias[22])->clasef="1","G","M")}
                :nHeadStrAlign := AL_CENTER
                :nDataStrAlign := AL_CENTER
                :bClrStd := {|| If(((aAlias[22])->clasef="1" .and. (aAlias[22])->estado="1" ),{CLR_BLACK,nRGB(250,219,216)}, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}) }
nRGB(242,247,252),nRGB(226,226,208) )}) }
        END WITH


Fondo en Rojo
Code (fw): Select all Collapse
        WITH OBJECT oLbx:aCols[ 8 ]
                :cTooltip := "(G)iro,(M)etalico"
                :bEditValue := {|| if((aAlias[22])->clasef="1","G","M")}
                :nHeadStrAlign := AL_CENTER
                :nDataStrAlign := AL_CENTER
                :bClrStd := { || if((aAlias[22])->clasef="2" .and. (aAlias[22])->estado="1", {CLR_HRED,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )},{CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}) }
        END WITH



He probado a hacer:
Code (fw): Select all Collapse
        WITH OBJECT oLbx:aCols[ 8 ]
                :cTooltip := "(G)iro,(M)etalico"
                :bEditValue := {|| if((aAlias[22])->clasef="1","G","M")}
                :nHeadStrAlign := AL_CENTER
                :nDataStrAlign := AL_CENTER
                :bClrStd := Colores(oLbx,aAlias)
        END WITH

...................................................

//---------------------------
static function Colores(oLbx,aAlias)
local respuesta

        if (aAlias[22])->clasef = "1" .and. (aAlias[22])->estado = "1"
                respuesta := {|| {CLR_BLACK,nRGB(250,219,216)}, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )} }
        endif

        if (aAlias[22])->clasef = "2" .and. (aAlias[22])->estado = "1"
                respuesta := {||{CLR_HRED,CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) ) }, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )} }
        endif

return respuesta

y nada, lo ignora.


Como podría hacerlo?
--------------------------

Saludos



Jose Luis
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Xbrowse, cambio color texto y celda
Posted: Sat Aug 27, 2022 07:12 PM
Asi no te funcionaria? (No lo he probado)
Code (fw): Select all Collapse
WITH OBJECT oLbx:aCols[ 8 ]
                :cTooltip := "(G)iro,(M)etalico"
                :bEditValue := {|| if((aAlias[22])->clasef="1","G","M")}
                :nHeadStrAlign := AL_CENTER
                :nDataStrAlign := AL_CENTER
                :bClrStd := {|| Colores(oLbx,aAlias)}
END WITH
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Re: Xbrowse, cambio color texto y celda
Posted: Sat Aug 27, 2022 08:58 PM
Buenas

He probado:
Code (fw): Select all Collapse
        WITH OBJECT oLbx:aCols[ 8 ]
                :cTooltip := "(G)iro,(M)etalico"
                :bEditValue := {|| if((aAlias[22])->clasef="1","G","M")}
                :nHeadStrAlign := AL_CENTER
                :nDataStrAlign := AL_CENTER
                :bClrStd := { || Colores(oLbx,aAlias)  }
.......................................................

//---------------------------
static function Colores(oLbx,aAlias)
local respuesta

        if (aAlias[22])->clasef = "1" .and. (aAlias[22])->estado = "1"
                respuesta := "{CLR_BLACK,nRGB(250,219,216)}, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}"
        endif

        if (aAlias[22])->clasef = "2" .and. (aAlias[22])->estado = "1"
                respuesta := "{CLR_HRED,CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) ) }, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}"
        endif
return respuesta


Me da el error "Error array access
--------------------------

Saludos



Jose Luis
Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM
Re: Xbrowse, cambio color texto y celda
Posted: Sun Aug 28, 2022 03:46 AM
For I=1 To [Numeros de columnas]
If I=8
oBrw:aCols[I]:={|| If(((aAlias[22])->clasef="1" .and. (aAlias[22])->estado="1" ),{CLR_BLACK,nRGB(250,219,216)}, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}) }
nRGB(242,247,252),nRGB(226,226,208) )}) }
Endif
Next I
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Re: Xbrowse, cambio color texto y celda
Posted: Sun Aug 28, 2022 07:54 AM

Hola

No me funciona.

Como he dicho antes, lo que necesito es operar sobre la misma celda, pero con múltiples condiciones.
Es decir en la columna 8 quiero mostrar lo siguiente:

  • Si en la base de datos la forma de pago es Giro, y está pagada, (Color fuente y fondo normal) :bClrStd:= { || { CLR_BLACK, If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) ) } }
  • Si en la base de datos la forma de pago es Giro y no está pagada, (Color fuente normal y fondo Rojo) :bClrStd := {|| If(((aAlias[22])->clasef="2" .and. (aAlias[22])->estado="1" ),{CLR_HRED,CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) ) }, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}) }
  • Si en la base de datos la forma de pago es Metalico y esta pagada, (Color fuente y fondo normal) :bClrStd:= { || { CLR_BLACK, If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) ) } }
  • Si en la base de datos la forma de pago es Metalico y no esta pagada, (Color fuente Rojo y fondo Normal) :bClrStd := {|| If(((aAlias[22])->clasef="1" .and. (aAlias[22])->estado="1" ),{CLR_BLACK,nRGB(250,219,216)}, {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )}) }

De nomento solo esos supuestos , pero luego iremos añadiendo mas supuestos de colores y fondo, dependiendo de los valores de otros campos.

--------------------------

Saludos



Jose Luis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Re: Xbrowse, cambio color texto y celda (Solucionado)
Posted: Sun Aug 28, 2022 11:04 AM
Solucionado

A veces lo mas sencillo no lo veo y me complico la vida tontamente:

Code (fw): Select all Collapse
        WITH OBJECT oLbx:aCols[ 8 ]
                :cTooltip := "(G)iro,(M)etalico"
                :bEditValue := {|| if((aAlias[22])->clasef="1","G","M")}
                :nHeadStrAlign := AL_CENTER
                :nDataStrAlign := AL_CENTER
                :bClrStd := {|| If(((aAlias[22])->clasef="1" .and. (aAlias[22])->estado="1" ),{CLR_BLACK,nRGB(250,219,216)},;
                                If(((aAlias[22])->clasef="2" .and. (aAlias[22])->estado="1" ),{CLR_HRED,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )},;
                                 {CLR_BLACK,If( oLbx:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(226,226,208) )})) }
        END WITH


Simplemente enlazando varios if, y ya esta.
--------------------------

Saludos



Jose Luis

Continue the discussion