Cambiar color de Celda en TSBrowse

Post Reply
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Cambiar color de Celda en TSBrowse

Post by cmsoft »

Estimados:
Como puedo hacer para cambiar el color de una determinada celda en TSBROWSE, segun una condicion dada.
El caso es que estoy mostrando el estado de las reservas de habitaciones de un hotel, el cual tiene varios estados, ocupada, libre, en limpieza, inhabilitada, etc.
Lo que quiero hacer es mostrar en la grilla del browse con diferentes colores, los posibles estados.
Alguien podra darme una mano con esto?
Desde ya muchas gracias por anticipado
User avatar
Leon Valenzuela
Posts: 57
Joined: Tue Nov 04, 2008 2:08 pm
Location: Santiago - Chile
Contact:

Re: Cambiar color de Celda en TSBrowse

Post by Leon Valenzuela »

No es mucho lo que puedo aportar, pero quizás te sirva...

La librería TSBrowse 7.0, trae un ejemplo en el ejemplo 4, aparece esto, que es la evaluación para cambiar de color la celda... espero te sirva.

Desde Chile, un saludo.

(Paises hay muchos, FIVEWIN, uno solo.)

Code: Select all

ADD COLUMN TO oBrw[ 4 ] ;
          HEADER "Salary" ;
          3DLOOK TRUE;
          DATA FieldWBlock( "Salary", Select() ) ;
          COLORS {||If(Salary>100000,CLR_WHITE,CLR_BLACK)}, CLR_NBLUE ;
          ALIGN DT_RIGHT ;  // defaults right alignment at 3 levels
          EDITABLE MOVE DT_MOVE_NEXT
Quiero hacer facturación electrónica...

Leon Valenzuela.
Santiago - Chile.
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Cambiar color de Celda en TSBrowse

Post by mmercado »

cmsoft wrote:El caso es que estoy mostrando el estado de las reservas de habitaciones de un hotel, el cual tiene varios estados, ocupada, libre, en limpieza, inhabilitada, etc.
Lo que quiero hacer es mostrar en la grilla del browse con diferentes colores, los posibles estados.
Hola:

También puedes probar con el método oBrw:SetColor, ejemplo:

Code: Select all

   Local aColors { CLR_WHITE, CLR_HGRAY, CLR_HGREEN, CLR_HBLUE }
   
   oBrw:SetColor( { CLR_PANE }, { {||aColors[ MIBASE->STATUS ]} } )
Con esto se mostrará un color de fondo en cada renglón de acuerdo con el status de la habitación.

Un abrazo.

Manuel Mercado
manuelmercado at prodigy dot net dot mx
devwin2010
Posts: 38
Joined: Tue Jul 17, 2007 12:37 pm

Re: Cambiar color de Celda en TSBrowse

Post by devwin2010 »

Estimado CmSoft

Yo tengo diseñado un planning de reservas para hotel y cambio los colores en tsbrowse de la siguiente manera


ADD COLUMN TO BROWSE oBrw DATA ARRAY ELEMENT 3 ;
HEAD ARR1[2]+CRLF+ARR11[2] WIDTH 59 ;
COLORS {|| control3(aTestdata1[oBrw:nAt ,1],aTestdata1[oBrw:nAt ,3],atestdata
[3] ),nRgb(255,255,255),nRgb(0,0,0) },; {|| nret }



function control3(lx,xl,ll)

default nRet:=nRgb(255,255,255)


SET EXACT ON

SELE 78

USE PLACOL2

*LOCATE FOR ALLTRIM(LX)=ALLTRIM(PLACOL2->HABITACION) .AND. ALLTRIM(XL)=ALLTRIM(PLACOL2->CLIENTE) .AND. ALLTRIM(LL)=ALLTRIM(UPPER(PLACOL2->CAMPO))

LOCATE FOR ALLTRIM(LX)=ALLTRIM(PLACOL2->HABITACION) .AND. ALLTRIM(LL)=ALLTRIM(UPPER(PLACOL2->CAMPO))

IF FOUND()
if placol2->estado = "OCUPADA"
nestado := placol2->estado
nRet:=CLR_HRED
elseif placol2->estado = "RESERVADA"
nRet:=CLR_HGREEN
elseif placol2->estado = "LIBRE"
nRet:=nRgb(255,255,255)
endif
ELSE
nRet:=nRgb(255,255,255)
ENDIF

Saludos
Fabian
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Cambiar color de Celda en TSBrowse

Post by cmsoft »

Estimados:
Gracias a los 3 por contestar mi inquietud.
El tema es que tengo una grilla donde muestro la semana completa, el eje x serian los dias y el y las habitaciones, guardadas en una matriz. El tema es que con oBrw:setcolor() como dice Manuel no puedo hacer referencia a un valor en una tabla porque lo tengo en un array de 2 dimensiones. La opcion de Fabian es mas parecida, pero yo en cada celda tengo un dia distinto de la misma habitacion en la semana que se está mostrando, y no se como hacer referencia a cada par x,y de la matriz para hacer referencia.
No se si me explico, pero viendo el caso, tal vez tenga que mostrar una tabla temporaria, que se borre cada vez que cambia de dia, y que contenga el estado para poder usar la solucion de Manuel. No se como funcionará en cuanto a rapidez, el borrar y rellenar una tabla transitoria.
Si se les ocurre algo mas, desde ya muy agradecido.
Igualmente, las soluciones me parecieron muy aplicables a otros problemas que he tenido.
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Cambiar color de Celda en TSBrowse

Post by cmsoft »

Amigos:
Gracias a sus sugerencias, consegui la solucion haciendo unos toques al codigo ofrecido.
El codigo quedo asi

Code: Select all

aColores := { CLR_WHITE,CLR_HGRAY, CLR_GREEN, CLR_BLUE}
REDEFINE BROWSE oLbx ID 111 OF oDlg CELLED ;
           COLORS CLR_BLACK, RGB( 255, 255, 235);
           ALIAS "ARRAY" FONT oFont ON DBLCLICK Consulta(oLbx,aArray,mvar,1)
   oLbx:SetColor({2},{{|x,y| aColores[PoneCol(x,y)]}})
 
En la tabla aEsta, cargue los estados de las habitaciones.
Con la funcion PoneCol que es la siguiente

Code: Select all

************************************************
** Pone color a la celda
STATIC FUNCTION PoneCol(x,i)
LOCAL nRet := 1
DO CASE
   CASE aEsta[x,i] = " "
        nRet := 1
   CASE aEsta[x,i] = "R"
        nRet := 2
   CASE aEsta[x,i] = "D"
        nRet := 3
   CASE aEsta[x,i] = "P"
        nRet := 4
ENDCAS
RETURN nRet
Muhcas gracias a todos por sus aportes
Post Reply