Compañeros:
Como se hace para cambiarle el color a una columna de un listbox?.
Gracias
// ListBox use sample with colors
#Include "FiveWin.ch"
//--------------------------------------------------------------------------//
#Define CLR_LGRAY nRGB( 230, 230, 230 )
#Define CLR_LGREEN nRGB( 190, 215, 190 )
#Define CLR_VERMELHO nRGB( 255, 000, 000 ) //--> Vermelho Para a Letra
#Define CLR_AMARELO nRgb( 255, 255, 000 ) //--> Amarelo Para o Fundo
#Define CLR_BOMBOM nRGB( 165, 42, 42 ) //--> Marrom BomBom
#Define CLR_MARROM nRGB( 235, 202, 171 ) //--> Marrom Normal
Request OrdKeyNo, OrdKeyCount
//--------------------------------------------------------------------------//
STATIC oWnd
Function Main()
LOCAL oLbx, oSay, wfonte_FixedSys
LOCAL cItem := "Troque a Cor da ListBox em Tempo Real"
LOCAL oBtn1, oBtn2
LOCAL cTitle := ( "Testando uma ListBox com Cores - " ) + ;
( "kapiabafwh@bol.com.br" ) ;
DEFINE FONT wfonte_FixedSys NAME "FixedSys" SIZE 10,10
DEFINE WINDOW oWnd FROM 1, 1 TO 20, 60 ;
TITLE OemToAnsi( cTitle ) ;
COLOR "W+/B"
@ 2, 2 LISTBOX oLbx VAR cItem ;
ITEMS { "Item One", "Item Two", "Item Three", ;
"Item Four", "Item Five" } ;
OF oWnd SIZE 200, 150 ;
COLOR CLR_BROWN, CLR_LGREEN ;
FONT WFONTE_FIXEDSYS
@ 2, 40 SAY oSay VAR cItem SIZE 200, 12 OF oWnd
@ 8, 42 BUTTON oBtn1 PROMPT "&Cores" SIZE 80, 23 ;
ACTION( SET_COLOR( oLbx ) )
oBtn1:cToolTip := OemToAnsi( "N¢is ‚ bom com cores " )
@ 11, 42 BUTTON oBtn2 PROMPT "&Fim " SIZE 80, 20 OF oWnd ;
ACTION ( oWnd:End() ) CANCEL ;
MESSAGE "Pressione-me Para Finalizar"
oBtn2:cToolTip := OemToAnsi( "Saida - Exit - Cancelar " )
SET MESSAGE OF oWnd TO "Testando Cores na ListBox"
SET FONT OF oBtn1 TO WFONTE_FIXEDSYS
SET FONT OF oBtn2 TO WFONTE_FIXEDSYS
ACTIVATE WINDOW oWnd
wfonte_FixedSys:End()
Release All
Return Nil
//---------------------TROCA A COR EM TEMPO REAL----------------------------//
Function SET_COLOR( oLbx )
LOCAL oBrush
//-> Troca a cor da tela
/*
DEFINE BRUSH oBrush COLOR ChooseColor()
SET BRUSH OF oWnd TO oBrush
*/
//-> Troca a Cor da ListBox em tempo real
oLbx:SetColor( oLbx:nClrText, ChooseColor( oLbx:nClrPane ) )
oLbx:Refresh()
oLbx:SetFocus()
Return Nil
//--------------------------------------------------------------------------//
//-> FIM DO PROGRAMA
//-> Terceira cor em uma ListBox, Se tem uma condicao
oLbx:nClrPane := { || IIF( ( oLbx:cAlias)->( OrdKeyNo()) %2 == 1, ;
{CLR_WHITE, if( fecha> date(), CLR_RED,
RGB(204,255,255))}, {CLR_WHITE, if( fecha > date(), CLR_RED, RGB(127,192,144))} )}
Solo tienes que trabajar un poco el código.
Suponemos que los colores pijama son CELE y GRIS.
Los campos son FVto para lafecha de vencimiento y el campo logico COBRADO.
oLbx:nClrPane:={|| IIF((oLbx:cAlias)->FVTO <= DATE() .and. ! (oLbx:cAlias)->COBRADO, HROJO, ;
(IIF((oLbx:cAlias)->(OrdKeyNo())%2==0,CELE, GRIS)) ) }
Fíjate que la primera parte del IIF se refiere a que cumpla la condición y lo ponemos en rojo. Si no cumple la primera condición, vendria otros IIF con el pijama normal.
A mi me funciona perfectamente. Si no te sale, trabaja el código un poco.Un saludo
oCol:bClrStd:={|| {CLR_WHITE,CLR_GRAY} }
oCol:=oBrw:AddCol()
oCol:bEditValue := { || oEMPL:CODIGO }
oCol:nHeadStrAlign := AL_CENTER
oCol:cHeader:= "COD."
oCol:nWidth:=30
oCol:bClrStd:={|| {CLR_WHITE,CLR_GRAY} }
oCol:=oBrw:AddCol()
oCol:bEditValue := { || oEMPL:NOMBRE }
oCol:nHeadStrAlign := AL_CENTER
oCol:cHeader := "NOMBRE Y APELLIDOS"
oCol:nWidth:=200
oCol:=oBrw:AddCol()
oCol:bEditValue := { || oEMPL:CODNS }
oCol:cHeader:= "NS"
oCol:nWidth:=65
oCol:bClrStd:={|| {CLR_WHITE,CLR_GRAY} }
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 32 guests