Xbrowse con efecto pijama ( zebra)

Post Reply
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Xbrowse con efecto pijama ( zebra)

Post 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 ....
User avatar
Silvio.Falconi
Posts: 7114
Joined: Thu Oct 18, 2012 7:17 pm

Re: Xbrowse con efecto pijama ( zebra)

Post 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 !!!
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
russimicro
Posts: 263
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Xbrowse con efecto pijama ( zebra)

Post by russimicro »

Perfecto...

Probado con dbfcdx, ads y sqlrdd

Gracias
Johnson Russi
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

Re: Xbrowse con efecto pijama ( zebra)

Post by lucasdebeltran »

Manuel,

¿Has probado así?:

Code: Select all | Expand

:bClrStd          := { || { CLR_BLACK, If( oBrowse:KeyNo % 2 == 1, CLR_WHITE, RGB( 249, 249, 249 ) ) } }
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Xbrowse con efecto pijama ( zebra)

Post 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
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

Re: Xbrowse con efecto pijama ( zebra)

Post 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.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Xbrowse con efecto pijama ( zebra)

Post 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
Marcelo Via Giglio
Posts: 1071
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Xbrowse con efecto pijama ( zebra)

Post by Marcelo Via Giglio »

Holas,

ya esta implementado esto en FWH

saludos

Marcelo
User avatar
nageswaragunupudi
Posts: 10709
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Been thanked: 6 times
Contact:

Re: Xbrowse con efecto pijama ( zebra)

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

G. N. Rao.
Hyderabad, India
User avatar
Sistem
Posts: 226
Joined: Sun May 13, 2012 7:52 am

Re: Xbrowse con efecto pijama ( zebra)

Post by Sistem »

zebra effect
works with SQLRDD?

[]s
FWH2008 | xHarbour | BCC74 | SQLRDD
Post Reply