FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse:nDataLines := 33 Colorear SOLUCIONADO
Posts: 55
Joined: Mon Feb 20, 2012 02:56 PM
xBrowse:nDataLines := 33 Colorear SOLUCIONADO
Posted: Fri Aug 24, 2012 02:54 PM

Estimados, sigo molestando con xBrowse.

Tengo un xBrowse: oBrSaldo:nDataLines := 33, aquí coloco el saldo por día de una cuenta bancaria, dependiendo si
es sabado o domingo, no aparece el saldo.
Pregunta: Se puede colorear las línea de sabado o Domingo de un color diferente?
La base de Datos tiene 32 campos, cada uno representa el dia de un mes y la muestro asi-> Saldo(1)+CRLF+Saldo(2).... hasta 31 o fin del mes.
Dejo una imagen de como se ve, muchas gracias.

http://img841.imageshack.us/img841/6438/saldos.jpg

Muchas gracias, saludos.

Ruben Fernandez

Posts: 105
Joined: Thu Feb 26, 2009 04:08 PM
Re: xBrowse:nDataLines := 33 Colorear cada renglon?
Posted: Fri Aug 24, 2012 03:56 PM
Lo puedes hacer asi

Code (fw): Select all Collapse
oBrow::bClrStd      := {||  iif(  dia = "Domingo" .or. dia = "Sabado" ,aqui los colores ,  "")


Espero te ayude
Posts: 55
Joined: Mon Feb 20, 2012 02:56 PM
Re: xBrowse:nDataLines := 33 Colorear cada renglon?
Posted: Fri Aug 24, 2012 04:19 PM

Lo pruebo y aviso, muchas gracias.

Saludos
Ruben Fernandez

Posts: 55
Joined: Mon Feb 20, 2012 02:56 PM
Re: xBrowse:nDataLines := 33 Colorear cada renglon?
Posted: Sat Aug 25, 2012 04:50 AM

Javier: lamentablemente no funciona. Tengo una BD de 33 Campos que los muestro
en una columna sola con CAMPO1+CRLF+CAMPO2+CRLF...hasta 32. A cada uno de esos renglones es qie quier
asignarle un color. Quizás no sea posible, seguiré investigando.

Muchas gracias

Saludos Ruben Fernandez

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: xBrowse:nDataLines := 33 Colorear cada renglon?
Posted: Sat Aug 25, 2012 11:45 AM
Ruben,

La Clase XBrowse te permite el pintado "personalizado" de las celdas, con lo que puedes mostrar en ellas lo que desees.

Tienes un ejemplo en: FWH/samples/metro2.prg en concreto revisa:

oBrw:aCols[ 1 ]:bPaintText = { | oCol, hDC, cText, aCoors, aColors, lHighlight | DrawRow( oCol, hDC, cText, aCoors, oFont ) }

En ese codeblock se implementa el pintado de una celda del browse. Ahora lo siguiente es ver como programar el pintado que tu quieres :-)

Entiendo que tienes x lineas de texto y quieres que cada una se muestre de un color. Podrias hacer:

Code (fw): Select all Collapse
function DrawRow( oCol, hDC, cText, aCoors, oFont )

   local n

   oFont:Activate( hDC )

   for n = 1 to MLCount( cText )
      if n % 2 == 0
         SetBkColor( hDC, CLR_GRAY )
         // SetTextColor( hDC, CLR_... ) 
      else
         SetBkColor( hDC, CLR_CYAN )
         // SetTextColor( hDC, CLR_... )
      endif
      DrawText( hDC, MemoLine( cText,, n ), aCoors )
      aCoors[ 1 ] += 25
   next

   oFont:DeActivate( hDC )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 55
Joined: Mon Feb 20, 2012 02:56 PM
Re: xBrowse:nDataLines := 33 Colorear cada renglon?
Posted: Sat Aug 25, 2012 05:06 PM

Antonio: Muchas gracias, lo pruebo y aviso.

Saludos

Ruben Fernandez

Posts: 55
Joined: Mon Feb 20, 2012 02:56 PM
Re: xBrowse:nDataLines := 33 Colorear SOLUCIONADO
Posted: Sun Aug 26, 2012 06:43 AM

Gracias Antonio se solucionó con su fórmula

function DrawRow( oCol, hDC, cText, aCoors, oFont )
Local n

oFont:Activate( hDC )

for n = 1 to MLCount( cText )
if StrCharCount(MemoLine(cText, ,n ), ">" ) > 0
SetTextColor( hDC, CLR_HRED )
Else
SetTextColor( hDC, CLR_BLACK )
Endif
DrawText( hDC, MemoLine( cText,, n ), aCoors )
aCoors[ 1 ] += 12
next

oFont:DeActivate( hDC )

return nil

El caracter ">" fue el que use para diferenciar los dias de la semana con los sábados y domingos.

Muchas gracias
Saludos
Ruben Fernandez

Continue the discussion