xBrowse:nDataLines := 33 Colorear SOLUCIONADO

Post Reply
RuFerSo
Posts: 55
Joined: Mon Feb 20, 2012 2:56 pm

xBrowse:nDataLines := 33 Colorear SOLUCIONADO

Post 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
Last edited by RuFerSo on Sun Aug 26, 2012 6:39 am, edited 1 time in total.
User avatar
JavierVital
Posts: 105
Joined: Thu Feb 26, 2009 4:08 pm
Contact:

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

Post by JavierVital »

Lo puedes hacer asi

Code: Select all


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

 
Espero te ayude
RuFerSo
Posts: 55
Joined: Mon Feb 20, 2012 2:56 pm

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

Post by RuFerSo »

Lo pruebo y aviso, muchas gracias.

Saludos
Ruben Fernandez
RuFerSo
Posts: 55
Joined: Mon Feb 20, 2012 2:56 pm

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

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Post 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
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
RuFerSo
Posts: 55
Joined: Mon Feb 20, 2012 2:56 pm

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

Post by RuFerSo »

Antonio: Muchas gracias, lo pruebo y aviso.

Saludos

Ruben Fernandez
RuFerSo
Posts: 55
Joined: Mon Feb 20, 2012 2:56 pm

Re: xBrowse:nDataLines := 33 Colorear SOLUCIONADO

Post 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
Post Reply