Page 1 of 1

Xbrowse con efecto pijama ( zebra)

Posted: Mon May 04, 2015 5:14 pm
by mastintin
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

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 ....

Re: Xbrowse con efecto pijama ( zebra)

Posted: Tue May 05, 2015 10:28 am
by Silvio.Falconi
thanks
until now I made with a simply function ...

IF lPigiama
set_Pijama( .T.,oBrw,cColor1,cColor2)
Endif


now it is too good !!!

Re: Xbrowse con efecto pijama ( zebra)

Posted: Thu May 07, 2015 12:18 am
by russimicro
Perfecto...

Probado con dbfcdx, ads y sqlrdd

Gracias
Johnson Russi

Re: Xbrowse con efecto pijama ( zebra)

Posted: Thu May 07, 2015 7:02 pm
by lucasdebeltran
Manuel,

¿Has probado así?:

Code: Select all | Expand

:bClrStd          := { || { CLR_BLACK, If( oBrowse:KeyNo % 2 == 1, CLR_WHITE, RGB( 249, 249, 249 ) ) } }

Re: Xbrowse con efecto pijama ( zebra)

Posted: Thu May 07, 2015 7:28 pm
by mastintin
lucasdebeltran wrote:Manuel,

¿Has probado así?:

Code: Select all | Expand

:bClrStd          := { || { CLR_BLACK, If( oBrowse:KeyNo % 2 == 1, CLR_WHITE, RGB( 249, 249, 249 ) ) } }


Precisamente eso es lo que quiero evitar con esta implementación . No tener que llamar a una función de database que según cual puede relentizar el browser hasta limites de dejarlo inusable .
por ejemplo en ads con muchos registros , la función a usar no devuelve un numero de registro sino un porcentaje , con lo que el efecto no funciona al tener varios registros el mismo porcentaje )
Intenta ese código con un sistema ads en servidor de no muchos registros poniéndole para que respete los filtros ( usando por tanto adskeyno(,,1) ). ...cada movimiento del xbrowse se trasforma en 15 segundos de refresco :D ( y a veces mas )
Añadiendo la data ::nRowZebra y asignándola dependemos solo del propio xbrowse :D

Re: Xbrowse con efecto pijama ( zebra)

Posted: Thu May 07, 2015 7:34 pm
by lucasdebeltran
Entendido, a ver si entonces si lo incluyen en FWH.

Se suponía que la obtención de dicho valor la había optimizado Mr. Nages.

Re: Xbrowse con efecto pijama ( zebra)

Posted: Thu May 07, 2015 7:39 pm
by mastintin
lucasdebeltran wrote:Entendido, a ver si entonces si lo incluyen en FWH.

Se suponía que la obtención de dicho valor la había optimizado Mr. Nages.

Nages ha realizado una implementación magnifica y ha puesto un código que vuela , y prima como es lógico la velocidad sobre un efecto estético a ademas las funciones de cada motor de database no las pone el , son las que nos dan en este caso Advantage-sap y no podemos hacer mucho :D

Re: Xbrowse con efecto pijama ( zebra)

Posted: Fri Aug 28, 2015 12:19 am
by Marcelo Via Giglio
Holas,

ya esta implementado esto en FWH

saludos

Marcelo

Re: Xbrowse con efecto pijama ( zebra)

Posted: Fri Mar 04, 2016 11:15 pm
by nageswaragunupudi

Code: Select all | Expand

METHOD FullPaint() INLINE ( ::lTransparent .or. ::lMergeVert .or. ;
                               ::nMarqueeStyle == MARQSTYLE_HIGHLWIN7 .OR. ::lZebra )
 

FullPaint deteriorates performance very much in case of slow databases.

Re: Xbrowse con efecto pijama ( zebra)

Posted: Sat Mar 05, 2016 11:15 am
by Sistem
zebra effect
works with SQLRDD?

[]s