Page 1 of 1

xBrowse:nDataLines := 33 Colorear SOLUCIONADO

Posted: Fri Aug 24, 2012 2:54 pm
by RuFerSo
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

Re: xBrowse:nDataLines := 33 Colorear cada renglon?

Posted: Fri Aug 24, 2012 3:56 pm
by JavierVital
Lo puedes hacer asi

Code: Select all


oBrow::bClrStd      := {||  iif(  dia = "Domingo" .or. dia = "Sabado" ,aqui los colores ,  "")

 
Espero te ayude

Re: xBrowse:nDataLines := 33 Colorear cada renglon?

Posted: Fri Aug 24, 2012 4:19 pm
by RuFerSo
Lo pruebo y aviso, muchas gracias.

Saludos
Ruben Fernandez

Re: xBrowse:nDataLines := 33 Colorear cada renglon?

Posted: Sat Aug 25, 2012 4:50 am
by RuFerSo
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

Re: xBrowse:nDataLines := 33 Colorear cada renglon?

Posted: Sat Aug 25, 2012 11:45 am
by Antonio Linares
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: Select all

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
 

Re: xBrowse:nDataLines := 33 Colorear cada renglon?

Posted: Sat Aug 25, 2012 5:06 pm
by RuFerSo
Antonio: Muchas gracias, lo pruebo y aviso.

Saludos

Ruben Fernandez

Re: xBrowse:nDataLines := 33 Colorear SOLUCIONADO

Posted: Sun Aug 26, 2012 6:43 am
by RuFerSo
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