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
Cambiar color de Celda en TSBrowse
- Leon Valenzuela
- Posts: 57
- Joined: Tue Nov 04, 2008 2:08 pm
- Location: Santiago - Chile
- Contact:
Re: Cambiar color de Celda en TSBrowse
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.)
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.
Leon Valenzuela.
Santiago - Chile.
Re: Cambiar color de Celda en TSBrowse
Hola: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.
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 ]} } )
Un abrazo.
Manuel Mercado
manuelmercado at prodigy dot net dot mx
-
- Posts: 38
- Joined: Tue Jul 17, 2007 12:37 pm
Re: Cambiar color de Celda en TSBrowse
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
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
Re: Cambiar color de Celda en TSBrowse
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.
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.
Re: Cambiar color de Celda en TSBrowse
Amigos:
Gracias a sus sugerencias, consegui la solucion haciendo unos toques al codigo ofrecido.
El codigo quedo asi
En la tabla aEsta, cargue los estados de las habitaciones.
Con la funcion PoneCol que es la siguiente
Muhcas gracias a todos por sus aportes
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)]}})
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