Page 1 of 2

Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Mon Mar 07, 2011 1:24 pm
by Pedro
Hola a todos
Esto será una tontería, pero....¿porqué, si intento cambiar el color del header de un xbrowse con oBrw:bClrHeader, solo me cambia el color de las letras y no el del fondo?
Como curiosidad diré que sí me cambia el color del fondo de la columna del marcador y de la última columna vacía, pero no el del resto de las columnas.
¿ Hay que hacer algo más que poner el par de colores (letra y fondo) que se quiere utilizar ?

Re: Otro color en el header de Xbrowse

PostPosted: Mon Mar 07, 2011 3:02 pm
by Armando
Pedro:

oBrw:bClrHeader := { || {CLR_WHITE,CLR_BLACK} }

Saludos

Re: Otro color en el header de Xbrowse

PostPosted: Mon Mar 07, 2011 7:08 pm
by Pedro
Gracias por responder Armando, pero eso es lo que hago, oBrw:bClrHeader := {||{RGB(0,0,153), RGB( 255, 255, 102 ) } }, y ahí el color de la letra lo toma, azul RGB(0,0,153), no así el color del fondo del Header que queda tal cual era, sin embargo como dije, el header de la columna del boomarck si me lo cambia al amarillo, y el de la última columna de ajuste que está vacía, el resto no lo cambia.
¿Alguna solución?

Re: Otro color en el header de Xbrowse

PostPosted: Mon Mar 07, 2011 7:34 pm
by Armando
Pedro:

Por aquí sí funciona como lo haces tú, tal vez tu versión ?

Image

Saludos

Re: Otro color en el header de Xbrowse

PostPosted: Mon Mar 07, 2011 8:02 pm
by Daniel Garcia-Gil
Pedro...

verifdica que no estes usando la clausula 2007, de esa manera o te va a funcionar.... deberas usar bClrGrad para el caso que este activo l2007

este es un ejemplo (tomada de la misma clase)
Code: Select all  Expand view

   ::bClrGrad := { | lInvert | If( lInvert, ;
      { { 1/3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
        { 2/3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
      }, ;
      { { 1/3, nRGB( 219, 230, 244 ), nRGB( 207, 221, 239 ) }, ;
        { 2/3, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) }  ;
      } ) }
 


lInvert es el valor logico que se activara a TRUE cuando se presiona sobre el header

Re: Otro color en el header de Xbrowse

PostPosted: Mon Mar 07, 2011 8:32 pm
by Pedro
Armando, como habrás leído en la firma del post, uso la versión 10.12, no creo que sea la versión.
Daniel, la clausula 2007 la tengo quitada de este browse ya que pensé que afectaría al color del header. Aún así poniéndola o quitándola el resultado es el mismo. Esta es la construcción del Browse
Code: Select all  Expand view
   oLbx := TXBrowse():New( oWChild )
    oLbx:nMarqueeStyle       := MARQSTYLE_HIGHLCELL
    oLbx:nColDividerStyle    := LINESTYLE_BLACK
    oLbx:nRowDividerStyle    := LINESTYLE_BLACK
    oLbx:lColDividerComplete := .t.
    oLbx:nHeaderLines        := 2
    oLbx:lFooter             := .t.
   
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||DTOC((cAlias)->FECENTRA) }
    oCol:cHEADER       := "FECHA"+CRLF+"ENTRADA"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||DTOC((cAlias)->FECSALIDA) }
    oCol:cHEADER       := "FECHA"+CRLF+"SALIDA"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->ID }                      
    oCol:cHEADER       := "ID"+CRLF+"PACIENTE"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->PACIENTE }
    oCol:cHEADER       := "PACIENTE"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||DTOC((cAlias)->FECNAC) }
    oCol:cHEADER       := "FECHA"+CRLF+"NACIMIENTO"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->HOTEL }
    oCol:cHEADER       := "HOTEL"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->HABITACION }
    oCol:cHEADER       := "HABITACIÓN"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->TTOO }
    oCol:cHEADER       := "TTOO"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->RTE }
    oCol:cHEADER       := "RTE"
    oCol = oLbx:AddCol()
    oCol:bStrData      := { ||(cAlias)->SEGURO }
    oCol:cHEADER       := "COMPAÑÍA"+CRLF+"SEGURO"
   
     
    oLbx:SetRDD()

    for nFor := 1 to len( oLbx:aCols )
        oCol := oLbx:aCols[ nFor ]
        oCol:nEditType := 0
        oCol:blDClickData := {|| CtrPaciente(ID_MOD,oDPacien) }
    next
*    oLbx:l2007 := (.t.)
    oLbx:bClrHeader    := {||{RGB(0,0,153), RGB( 255, 255, 102 ) } }
    oLbx:bClrStd := { || If( ( (oLbx:cAlias)->(OrdKeyNo()) % 2 ) == 0, ;
                    { CLR_BLACK, RGB( 224, 236, 255 ) }, { CLR_BLACK, RGB( 189, 211, 253 ) } ) }
             
    oLbx:CreateFromCode()
    oWChild:oClient := oLbx

    ACTIVATE WINDOW oWChild MAXIMIZED ;
             ON INIT oLbx:SetFocus();    
             VALID( oMenu:Enable(),dbCloseAll(), .t. )
 

Re: Otro color en el header de Xbrowse

PostPosted: Mon Mar 07, 2011 10:38 pm
by Armando
Pedro:

Siguiendo la idea de Daniel, tal vez no basta con comentar la línea, prueba con

oBrw:l2007 := (.F.)

Saludos

Re: Otro color en el header de Xbrowse

PostPosted: Tue Mar 08, 2011 2:43 am
by FranciscoA
Pedro, tú lo tienes asi:
oBrw:bClrHeader := {||{RGB(0,0,153), RGB( 255, 255, 102 ) } }

Intenta, asi:
oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
De esta manera a mi me trabaja bien.
Saludos

Re: Otro color en el header de Xbrowse

PostPosted: Tue Mar 08, 2011 8:46 am
by Pedro
Hola a todos

Pues si Armando, la solución es poner l2007 a .F.
Francisco, esa solución la he utilizado y me hacía lo mismo, la solución de Armando era la correcta para poner el fondo en otro color, y si quiero que esté con el degradado, la solución es la de Daniel, utilizar el bClrGrad

Muchas gracias a todos

Re: Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Fri Sep 23, 2011 12:30 pm
by MarioG
Estimados;
retomo este hilo dado que estoy teniendo el problema inicialmente comentado
Mi xBrowse tiene l2007 en .T.; lo que pretendo es cambiar el color del texto de un header; cuando se hace clic sobre él ordena por esa columna, entonces la idea es resaltarlo con color
El codigo es:
Code: Select all  Expand view
     WITH Object ::oBrw
         if :aCols[nCol]:cOrder == "A"
            :aCols[nCol]:cOrder:= "D"
         elseif :aCols[nCol]:cOrder == "D"
            :aCols[nCol]:cOrder:= "A"
         else
            :aCols[nCol]:cOrder:= "A"
         end

         aEval( ::oBrw:aCols, {|o,n| if( !n == nCol, ( o:cOrder:= "", o:oHeaderFont:= ::oBrw:oFont ), ) })
         :aCols[nCol]:oHeaderFont:= ::hFont["SysFontB"]
         :bClrHeader := {|o| if( Empty( ::oBrw:aCols[nCol]:cOrder ), { CLR_BLACK, GetSysColor( COLOR_BTNFACE ), }, ;
                                                                     { CLR_HBLUE, GetSysColor( COLOR_BTNFACE ), } ) }
         :Refresh()
      END
 

Cual sería la forma de hacerlo?

Re: Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Fri Sep 23, 2011 1:28 pm
by acuellar
Mario se me ocurre algo asi:
Code: Select all  Expand view

   Private Zp:=1

   oCol:=oBrw:AddCol()
   oCol:bStrData  := { || CODIGO }
   oCol:nHeadStrAlign := AL_CENTER
   oCol:cHeader:= "CODIGO"
   oCol:nWidth:=nAncho
   oCol:cSortOrder:="ORDCOD"  //ASIGNADO EN EN EL TAG
   oCol:bLClickHeader:= {|| CambiaColor(1) }

  oCol:=oBrw:AddCol()
   oCol:bStrData  := { || NOMBRE }
   oCol:nHeadStrAlign := AL_CENTER
   oCol:cHeader:= "NOMBRE"
   oCol:nWidth:=nAncho
   oCol:cSortOrder:="ORDNOM"
   oCol:bLClickHeader:= {|| CambiaColor(2) }

...

Static Function CambiaColor(nCol)
  oBrw:aCols[zp]:bClrHeader := { || {CLR_BLACK,CLR_BLACK} }
  oBrw:aCols[nCol]:bClrHeader := { || {CLR_BLUE,CLR_BLACK} }
  zP:=nCol
 oBrw:GoTop()
Return Nil
 


Espero te sirva

Saludos,

Adhemar

Re: Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Fri Sep 23, 2011 2:34 pm
by MarioG
acuellar; gracias por responder
Por lo que veo tu variable Zp sirve para restablecer el color, llamemoslo, por defecto.
No obstante, el aplicar el color a nCol, es como lo vengo haciendo.
Esto no anda porque tengo activa la clausula l2007, como se explica en los post anteriores
O sea, lo que necesito es saber si se puede cambiar el color del FORE, para este caso

Re: Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Fri Sep 23, 2011 10:27 pm
by Francisco Horta
Mario,
yo le pongo una imagen a la columna para saber que esta ordenada, adjunto la imagen
ImageShack.us

http://imageshack.us/photo/my-images/402/ordenm.jpg/
salu2
pak.o

Re: Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Fri Sep 23, 2011 11:32 pm
by MarioG
pak.o
Se ve muy bien
Hay ejemplos en la carpeta samples? o, porfa incluime el codigo

Re: Otro color en el header de Xbrowse (SOLUCIONADO)

PostPosted: Sat Sep 24, 2011 3:13 pm
by Francisco Horta
Mario,
Creo si hay ejemplos en samples
pero te adjunto codigo:

aoCols[1] := oBrw2:AddCol()
aoCols[1]:AddBmpHandle( oApp:cDirBmps+"Orden.bmp" )
aoCols[1]:nWidth := 85
aoCols[1]:cHeader := "No. Folio"+CRLF+"Recepción"
aoCols[1]:bStrData := { || TRANSFORM( oQry2:FieldGet("id"), "99999999" ) }
aoCols[1]:nDataStrAlign := AL_RIGHT
aoCols[1]:nHeadStrAlign := AL_CENTER
aoCols[1]:nHeadBmpAlign := AL_RIGHT
aoCols[1]:bLClickHeader := { || aoCols[1]:nHeadBmpNo:=1,aoCols[2]:nHeadBmpNo:=0,cCampo:="id"}

salu2
P@ko