FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cambiar color de Celda en TSBrowse
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Cambiar color de Celda en TSBrowse
Posted: Wed Apr 22, 2009 04:34 PM

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

Posts: 57
Joined: Tue Nov 04, 2008 02:08 PM
Re: Cambiar color de Celda en TSBrowse
Posted: Wed Apr 22, 2009 09:11 PM
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 (fw): Select all Collapse
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.
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Re: Cambiar color de Celda en TSBrowse
Posted: Wed Apr 22, 2009 11:05 PM
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 (fw): Select all Collapse
 聽 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
Posts: 69
Joined: Tue Jul 17, 2007 12:37 PM
Re: Cambiar color de Celda en TSBrowse
Posted: Thu Apr 23, 2009 12:17 AM

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

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Cambiar color de Celda en TSBrowse
Posted: Thu Apr 23, 2009 02:27 AM

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.

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Cambiar color de Celda en TSBrowse
Posted: Thu Apr 23, 2009 03:05 AM
Amigos:
Gracias a sus sugerencias, consegui la solucion haciendo unos toques al codigo ofrecido.
El codigo quedo asi
Code (fw): Select all Collapse
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 (fw): Select all Collapse
************************************************
** 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

Continue the discussion