Cambiar Color a una CELDA en Xbrowse por cada registro

Cambiar Color a una CELDA en Xbrowse por cada registro

Postby José Camilo » Tue Sep 06, 2022 11:14 pm

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
José Camilo
 
Posts: 180
Joined: Wed Apr 07, 2021 3:56 pm

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

Postby leandro » Wed Sep 07, 2022 3:25 pm

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 view


....

    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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

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

Postby cmsoft » Wed Sep 07, 2022 5:11 pm

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 view

#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
 
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Postby José Camilo » Wed Sep 07, 2022 6:53 pm

Muchas GRACIAS !!!! Leandro y como siempre CESAR!!!!
José Camilo
 
Posts: 180
Joined: Wed Apr 07, 2021 3:56 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 76 guests