Cambiar Color a una CELDA en Xbrowse por cada registro

Post Reply
José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Cambiar Color a una CELDA en Xbrowse por cada registro

Post by José Camilo »

Hola, buenas noches para mi.
Tengo una dbf de artículos con el precio actual y precios de 4 proveedores distintos mas un campo por cada uno que me establece el porcentaje de diferencia con el precio actual.
necesito cambiar EN CADA REGISTRO el color de la celda del valor mas bajo de los precios de los 4 proveedores ya sea el color de fondo o el del importe.
si alguien ya encaro un tema así le agradecería me oriente como hacerlo.
Gracias.
José Camilo
User avatar
leandro
Posts: 1744
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 34 times
Been thanked: 10 times
Contact:

Re: Cambiar Color a una CELDA en Xbrowse por cada registro

Post by leandro »

Hola como vas?

Se me ocurre que recorras toda la dbf antes de mostrarla, identificas los registros que necesitas cambiar de color y los marcas. mediante una función defines los colores y luego si abres el xbrowse.

Code: Select all | Expand



....

    oCol:bClrStd      = {|| {_CLR_GRIS,colorEstado( oDbf->campoestado ) }  }


...


****************************
*CAMBIA EL COLOR DE LA CELDA
****************************
Function colorEstado(valor)

    IF valor=="A"
        Return nRGB(139,139,139) //gris oscuro
    ELSEIF valor=="D"
        Return nRGB(0,210,0) //verde oscuro
    ELSEIF valor=="E"
        Return nRGB(255,117,117) //rojo oscuro
    ELSEIF valor=="V"
        Return nRGB(255,117,117) //rojo oscuro
    ELSEIF valor=="I"
        Return nRGB(255,243,21) //Amarillo Oscuro
    ELSEIF valor=="Z"
        Return nRGB(255,243,21) //Amarillo Oscuro
    ELSE
        Return nRGB(94, 174, 255) //Azul Defecto
    ENDIF

 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 24.09 ] [ xHarbour 64 bits) ]
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Re: Cambiar Color a una CELDA en Xbrowse por cada registro

Post by cmsoft »

Creo que tendrías que poner el color según el valor mas chico para cada caso
Suponte que tienes la tabla con los siguientes campos: data1, data2, data3, valor1, valor2, valor3, valor4 , donde valor1 a valor4 son los que quieres comparar

Code: Select all | Expand


#include "FiveWin.ch"
//----------------------------------------------------------------//
function Main()
   local oDlg, oLbx
   USE Data
   DEFINE DIALOG oDlg FROM 5,10 TO 24, 86 ;
      TITLE "Valor minimo en verde"

   @  1, 0.50 XBROWSE oLbx ALIAS "DATA" AUTOCOLS SIZE 285, 95 OF oDlg
   WITH OBJECT oLbx
      :aCols[4]:bClrStd := {|| {CLR_BLACK,colorMin(4) }  }
      :aCols[5]:bClrStd := {|| {CLR_BLACK,colorMin(5) }  }
      :aCols[6]:bClrStd := {|| {CLR_BLACK,colorMin(6) }  }
      :aCols[7]:bClrStd := {|| {CLR_BLACK,colorMin(7) }  }
      :CreateFromCode()
   END

   @ 10, 18 BUTTON "&Cancel" OF oDlg SIZE 40, 12  ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil

STATIC FUNCTION ColorMin(n)
LOCAL nColor := CLR_WHITE
DO CASE
   CASE n = 4
        IF(data->valor1 < data->valor2 .and. data->valor1 < data->valor3 .and. data->valor1 < data->valor4 )
           nColor := CLR_GREEN
        ENDIF
   CASE n = 5
        IF(data->valor2 < data->valor1 .and. data->valor2 < data->valor3 .and. data->valor2 < data->valor4 )
           nColor := CLR_GREEN
        ENDIF
   CASE n = 6
        IF(data->valor3 < data->valor1 .and. data->valor3 < data->valor2 .and. data->valor2 < data->valor4 )
           nColor := CLR_GREEN
        ENDIF
   CASE n = 7
        IF(data->valor4 < data->valor1 .and. data->valor4 < data->valor3 .and. data->valor4 < data->valor3 )
           nColor := CLR_GREEN
        ENDIF
ENDCASE
RETURN nColor
 
José Camilo
Posts: 212
Joined: Wed Apr 07, 2021 3:56 pm

Re: Cambiar Color a una CELDA en Xbrowse por cada registro

Post by José Camilo »

Muchas GRACIAS !!!! Leandro y como siempre CESAR!!!!
Post Reply