Xbrowse con efecto pijama ( zebra)
Posted: Mon May 04, 2015 5:14 pm
Despues de darle muchas vueltas al tema del efecto pijama que relentizaba los xbrowse con ads , he llegado a una implementacion facil con pocos cambios en el xbrowse ...
Nuevas datas
Asignamos asi al crear el xbrowse:
o se puede crear un metodo SetZebra si se quiere ...
solo dos cambios en el codigo xbrowse ....
y listo ....
Nuevas datas
Code: Select all | Expand
DATA nRowZebra AS NUMERIC INIT 0
DATA aClrZebra
DATA lZebra AS LOGICAL INIT .f.
Asignamos asi al crear el xbrowse:
Code: Select all | Expand
::lZebra := .t.
::aClrZebra := { { 0, RGB(255,255,255) }, { 0, rgb(237,243,254) } }
::bClrStd := { || ::aClrZebra[ ::nRowZebra %2 + 1 ] }
o se puede crear un metodo SetZebra si se quiere ...
Code: Select all | Expand
METHOD SetZebra( lZebra, aClrZebra ) CLASS TXBrowse
DEFAULT lZebra := .t.
DEFAULT aClrZebra := { { 0, RGB(255,255,255) }, { 0, rgb(237,243,254) } }
::lZebra := lZebra
if ::lZebra
::aClrZebra := aClrZebra
::bClrStd := { || ::aClrZebra[ ::nRowZebra %2 + 1 ] }
else
::bClrStd := {|| { CLR_BLACK, GetSysColor( COLOR_WINDOW )} }
endif
Return nil
solo dos cambios en el codigo xbrowse ....
Code: Select all | Expand
METHOD Paint() CLASS TXBrowse
......
do while nRowPos <= nMaxRows
// We must also paint some times after the last visible column
IF ::lZebra // nuevo
::nRowZebra := nRowPos // nuevo
endif // nuevo
if hSelBrush != nil
.....
METHOD FullPaint() INLINE ( ::lTransparent .or. ::lMergeVert .or. ;
::nMarqueeStyle == MARQSTYLE_HIGHLWIN7 .OR. ::lZebra )
y listo ....