FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cambiar color columna listbox
Posts: 162
Joined: Tue Feb 03, 2009 10:08 PM
Cambiar color columna listbox
Posted: Wed Jul 27, 2016 01:08 PM

Compañeros:

Como se hace para cambiarle el color a una columna de un listbox?.

Gracias

J. Ernesto Pinto Q.
Fwh_x64 2501, BCC++_x64 7_70 , Harbour 3.20, LopeEdit 5.8
jepsys@hotmail.com, jepsys@gmail.com

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cambiar color columna listbox
Posted: Wed Jul 27, 2016 01:37 PM
Code (fw): Select all Collapse
// 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


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cambiar color columna listbox
Posted: Wed Jul 27, 2016 01:38 PM
Code (fw): Select all Collapse
//-> 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))} )}


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Cambiar color columna listbox
Posted: Wed Jul 27, 2016 01:38 PM
Code (fw): Select all Collapse
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


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Cambiar color columna listbox
Posted: Wed Jul 27, 2016 01:49 PM
Ernesto quizas así te sirva

Code (fw): Select all Collapse
  oCol:bClrStd:={|| {CLR_WHITE,CLR_GRAY} }


Saludos,

Adhemar
Saludos,



Adhemar C.
Posts: 162
Joined: Tue Feb 03, 2009 10:08 PM
Re: Cambiar color columna listbox
Posted: Thu Jul 28, 2016 01:32 PM

Lo que busco es cambiar por ejemplo, el color de la columna 3 y 5.

Saludos

J. Ernesto Pinto Q.
Fwh_x64 2501, BCC++_x64 7_70 , Harbour 3.20, LopeEdit 5.8
jepsys@hotmail.com, jepsys@gmail.com

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Cambiar color columna listbox
Posted: Thu Jul 28, 2016 03:25 PM
Ernesto

Lo colocas en cada columna que querras

Code (fw): Select all Collapse
  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} }


Saludos,

Adhemar
Saludos,



Adhemar C.

Continue the discussion