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