Page 1 of 2

SkinButtons : Devorador de memoria... ( SOLVED )

PostPosted: Fri Aug 13, 2010 2:27 am
by Raymundo Islas M.
Antonio,

Si activo el skinbutton y con tan solo dejar el cursor encima de cualquier boton, empieza a devorar la memoria de la PC !! a razon de 4kb por segundo.

Ya probe desactivandolo y no pasa nada, lo vuelvo a activar y empieza a hacer lo mismo.

Hasta parece taximetro !!!! :shock:


Saludos

Re: SkinButtons : Devorador de memoria...

PostPosted: Tue Aug 24, 2010 1:02 am
by Antonio Linares
Raymundo,

Te ocurre con todos los ejemplos con SkinButon() ?

Lo vamos a revisar de inmediato, gracias! :-)

Re: SkinButtons : Devorador de memoria...

PostPosted: Wed Sep 15, 2010 2:22 pm
by Raymundo Islas M.
Antonio,

Si encontraste algun leak ?

O solo me pasa a mi, ya que veo que ningun otro colega lo haya confirmado o desmentido.

Seria una verdadera lastima, ya que en verdad lucen muy bien los botones con esa clase.


Saludos

Re: SkinButtons : Devorador de memoria...

PostPosted: Wed Sep 15, 2010 4:05 pm
by Ruben Fernandez
Raymundo, probastes los rbbuton

Aqui te dejo un ejemplo:


REDEFINE RBBTN oBoton1 ID 240 OF oDlg ;
ACTION( GUARDAADD(cNro),lSaleaDD:=.t.,oDlg:End()) BITMAP "SALIR2" ;
PROMPT "&Guardar" LEFT BORDER
oBoton1:SetFont(oFont3 ) ; oBoton1:cToolTip := { " " + CRLF + "Guardar cambios", "Guardar serial" }


aSkin[ SKIN_RED ]:SetSkin( oBoton1 )


FUNCTION BuildSkin( aSkin )


//default skin
aSkin[ SKIN_DEFAULT ] = TSkinRBtn():New()

//skin red
aSkin[ SKIN_RED ] = TSkinRBtn():New()
aSkin[ SKIN_RED ]:nClrBoxIn = RGB( 255,255,255 )
aSkin[ SKIN_RED ]:nClrBoxOut = RGB( 255, 0, 0)
aSkin[ SKIN_RED ]:aGradiant = { { 0.3, RGB( 254, 154, 128 ), RGB( 254, 154, 128 ) }, ;
{ 0.7, RGB( 252, 85, 40 ), RGB( 181, 61, 29 ) } }
aSkin[ SKIN_RED ]:bClrGradNormal = { | lPressed | if ( lPressed,;
{ { 1, RGB( 181, 61, 29 ), RGB( 254, 154, 128 ) } },;
{ { 1, RGB( 254, 154, 128 ), RGB( 181, 61, 29 ) } } ) }


RETURN NIL

//-----------------------------------------------------//

#define BLUE0 RGB( 218, 229, 243 )
#define BLUE1 RGB( 199, 216, 237 )
#define BLUEBOX0 RGB( 141, 178, 227 )
#define BLUEBOX2 RGB( 237, 242, 248 )

CLASS TSkinRBtn

DATA bClrGradNormal
DATA aClrGradOver
DATA bClrGradSubOver
DATA aClrGradUnder
DATA aClrGradBack
DATA aGradiant
DATA bClrText
DATA bClrGradSelectPress
DATA bClrGradSelect
DATA aClrGradBtnGr
DATA nClrBoxIn, nClrBoxOut

METHOD New( bClrGradNormal, aClrGradOver, bClrGradSubOver, aClrGradUnder,;
aClrGradBack, aGradiant, bClrText, bClrGradSelectPress, bClrGradSelect,;
aClrGradBtnGr )

METHOD SetSkin( oRBtn )

ENDCLASS

//-----------------------------------------------------//

METHOD New( bClrGradNormal, aClrGradOver, bClrGradSubOver, aClrGradUnder,;
aClrGradBack, aGradiant, bClrText, bClrGradSelectPress, bClrGradSelect,;
aClrGradBtnGr, nClrBoxIn, nClrBoxOut, nRound ) CLASS TSkinRBtn

DEFAULT aGradiant := { {0.3, BLUE0, BLUE0 }, { 0.7, BLUE1, BLUE0 } }

DEFAULT nClrBoxOut := BLUEBOX0, nClrBoxIn := BLUEBOX2

DEFAULT bClrGradNormal := { | lPressed | if ( lPressed,;
{ ;
{ 1/4, nRGB( 254, 215, 169 ), nRGB( 251, 179, 99 ) } , ;
{ 3/4, nRGB( 250, 155, 50 ), nRGB( 253, 239, 173 ) } ;
},;
{;
{ 1/4, nRGB( 255, 253, 222 ), nRGB( 255, 231, 147 ) } , ;
{ 3/4, nRGB( 255, 215, 86 ), nRGB( 255, 231, 153 ) } ;
} ) }

DEFAULT bClrGradSubOver := { | lPressed | if ( lPressed,;
{ ;
{ 3/4, nRGB( 248, 187, 107 ), nRGB( 253, 171, 98 ) } , ;
{ 1/4, nRGB( 253, 154, 63 ), nRGB( 255, 164, 64 ) };
},;
{;
{ 3/4, nRGB( 255, 253, 222 ), nRGB( 255, 231, 147 ) } , ;
{ 1/4, nRGB( 255, 215, 86 ), nRGB( 255, 231, 153 ) };
} ) }

DEFAULT aClrGradUnder := {|| { {1 , nRGB( 248,186,107), nRGB( 255, 253, 222 ) } } }

DEFAULT aClrGradOver := {|| { {1 , nRGB( 255,215,84), nRGB( 255, 253, 222 ) } } }

DEFAULT aClrGradBack := { { 1 , nRGB( 255, 253, 222 ), nRGB( 255, 253, 222 ) } }

DEFAULT bClrGradSelect := {| lSelected | if( lSelected ,;
{ ;
{1/4, nRGB( 253,212,168 ), nRGB( 251,178,99 ) },;
{3/4, nRGB( 250,157,52 ), nRGB( 252,234,163 ) };
},;
{ ;
{1/4, nRGB( 245,177,110 ), nRGB( 243,165,89 ) },;
{3/4, nRGB( 216,136,52 ), nRGB( 249,202,98 ) } ;
} ) }

DEFAULT bClrGradSelectPress := {| lPressed | if( lPressed ,;
{ ;
{ 1/4, nRGB( 248, 187, 107 ), nRGB( 253, 171, 98 ) } , ;
{ 3/4, nRGB( 253, 154, 63 ), nRGB( 255, 164, 64 ) };
},;
{ ;
{1/4, nRGB( 245,177,110 ), nRGB( 243,165,89 ) },;
{3/4, nRGB( 216,136,52 ), nRGB( 249,202,98 ) } ;
} ) }

DEFAULT aClrGradBtnGr := {|| ;
{ ;
{ 1/4, nRGB( 200, 219, 238 ), nRGB( 201, 221, 246 ) } , ;
{ 3/4, nRGB( 192, 212, 237 ), nRGB( 208, 225, 247 ) };
} }


::bClrGradNormal = bClrGradNormal
::aClrGradOver = aClrGradOver
::bClrGradSubOver= bClrGradSubOver
::aClrGradUnder = aClrGradUnder
::aClrGradBack = aClrGradBack
::bClrGradSelect = bClrGradSelect
::bClrGradSelectPress = bClrGradSelectPress
::aClrGradBtnGr = aClrGradBtnGr
::aGradiant = aGradiant
::nClrBoxIn = nClrBoxIn
::nClrBoxOut = nClrBoxOut


RETURN Self

//-----------------------------------------------------//

METHOD SetSkin( oRBtn ) CLASS TSkinRBtn

IF oRBtn:hBack != NIL
DeleteObject( oRBtn:hBack )
oRBtn:hBack = NIL
ENDIF

oRBtn:bClrGradNormal = ::bClrGradNormal
oRBtn:aClrGradOver = ::aClrGradOver
oRBtn:bClrGradSubOver = ::bClrGradSubOver
oRBtn:aClrGradUnder = ::aClrGradUnder
oRBtn:aClrGradBack = ::aClrGradBack
oRBtn:bClrGradSelect = ::bClrGradSelect
oRBtn:bClrGradSelectPress = ::bClrGradSelectPress
oRBtn:aClrGradBtnGr = ::aClrGradBtnGr
oRBtn:aGradiant = ::aGradiant
oRBtn:nClrBoxIn = ::nClrBoxIn
oRBtn:nClrBoxOut = ::nClrBoxOut


RETURN NIL

Re: SkinButtons : Devorador de memoria...

PostPosted: Wed Sep 15, 2010 4:57 pm
by rolando
Raymundo,

Yo uso los buttonbmp y no hace el problema que comentas. Hice la prueba especialmente fijándome en lo que dices pero no aumenta el consumo de memoria.

Saludos

Rolando

Re: SkinButtons : Devorador de memoria...

PostPosted: Wed Sep 15, 2010 7:20 pm
by Antonio Linares
El tema de los SkinButtons() lo hemos revisado recientemente y se ha comentado en el foro:

viewtopic.php?p=104420#p104420

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 12:37 am
by Raymundo Islas M.
Ruben,
Sip, ya los he estado checando y viendo mis opciones, creo que al final seran mi solucion.
El unico "incoveniente" que veo es precisamente el color, como son parte de la clase RibbonBar, si modifico los colores de los botones de rebote se modifican los colores de la Ribbon.
Aunque veo en tu post que hiciste una miniclase para los colores, voy a hacer pruebas con tu codigo !! Gracias


Rolando,
Al parecer ( no he probado con otros ) esto sucede unicamente con botones "normalitos" al momento de montarles el skin. De todos modos, voy a tener que probar con otras opciones para que no queden los botones "tristes" ( sin color ) en las pantallas.
Podrias por favor en tu PC hacer lo siguiente :
- generar en samples el archivo testsk1
- abres el task manager
- coloca el cursor encima de cualquier boton y asi lo dejas
- checa como se comporta el testsk1.exe
( quizas mi PC esta poseida ) :shock:
Gracias

antonio,
Desafortunadamente no puedo probar los ajustes que le hayan hecho recientemente ya que tengo la 10.6
Deja me actualizo pronto porque quiero utilizar la nueva clase de folders y veo.


Saludos a todos

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 2:14 am
by rolando
Raymundo,

Hice el test y lo grabé a un EXE para que lo veas.

http://www.megaupload.com/?d=AY1VUL8V

Saludos

Rolando

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 2:54 am
by Raymundo Islas M.
Rolando,

Primero que nada, gracias por tomarte la molestia.

- Disculpa por no haberte comentado lo siguiente, en el task manager usa el tab de Procesos en vez de Rendimiento y veras que aumenta de 4 kb por segundo
Aun asi, alcanzo ver que empiezas con 139,xxx y acabas en 138,xxx en el minuto que dura el video

- Con que utilitario lo grabaste ? intente grabarlo con mi BB pero fue un desastre ! no encontre el disco de instalacion para accesar a los videos y W7 solo me mostraba la carpeta de canciones ! :P

A lo que voy con esto, seguramente a ninguno de nosotros nos afectaria "perder" varios mb de ram cuando en nuestros equipos tenemos varios Gb instalados, pero he visto varios clientes que aun ( sip, suena increible ) tienen 256 mb y hace una semana me tope con uno que tenia tan solo 128 mb en ram en sus equipos y por mas que se les dice que en vez de estar en los mostradores deberian estar en los museos esas PCs 8) siempre dicen : pues esta funcionando bien, por que la tengo que cambiar ?? lol
Y como la app es un 70% de consultas y el resto operativa seguro estoy que aun con 512 mb ni siquiera al final del dia, ya se les acabaron los recursos.

Saludos

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 3:00 am
by rolando
Raymundo,

Tienes razón. Estoy medio cansado y mientras cenaba me dí cuenta de mi error en el test.

Acá va de nuevo. Acá se comprueba lo que dices.

http://www.megaupload.com/?d=OM03BC49

Saludos.

Rolando

P.D.: Pasame tu email así te envío algo

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 5:25 am
by Raymundo Islas M.
Rolando,

Te agradezco mucho por la atencion y dispocision.

Ahora tambien podre estar mas tranquilo sabiendo que no esta "poseida" mi PC :lol:

Que tengas un buen descanso compañero, aqui apenas es media noche y me faltan todavia algunas horas mas de trabajo :|

Gracias

P.D. mi correo es : islasdevsys(at)hotmail.com

Saludos

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 12:21 pm
by Ruben Fernandez
Raymundo: La miniclase a la que te refieres la hizo Daniel aqui en el foro, pruebalo quizas sea la solucion por el momento.
Ademas los rbbutton tienen la posibilidad de poner el prompt en 2 lineas y se ve bien, cosa que no he logrado nada mas que con los
tsbutton de Manuel.
Una cosilla de los rbbuton es que si usas las teclas aceleradoras emiten un sonido, que no he sabido como sacarlo...por lo demas
estan bien.

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 4:42 pm
by Raymundo Islas M.
Ruben,

Suena excelente todo lo que comentas : colores con degradado, bitmaps, multilinea, tooltips, etc

Pero antes de empezar a hacer cambios a mi codigo, podria "robarte" unos minutos de tu tiempo y pedirte si haces la misma prueba que gentilmente Rolando realizo ayer ?

Ya que tienes tu app funcionando con los rbbutons y que tambien estan "skineados", checar si no pasa nada con los recursos.

Gracias anticipadas.


Saludos

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 8:44 pm
by rolando
Raymundo,

Hice el testrbtn (supongo que es el que habías pedido), y hay diferencia a favor.

http://www.megaupload.com/?d=NL8UFZTJ

Además, te mandé un soft para realizar los EXE de presentaciones de pantalla.

Saludos.

Rolando :D

Re: SkinButtons : Devorador de memoria...

PostPosted: Thu Sep 16, 2010 11:14 pm
by Raymundo Islas M.
Rolando,

En verdad que te agradezco la atencion al asunto.

Por lo que veo es que, si queremos darle un un pequeño lift a los botones de nuestras apps, el ganador es RBBtns que ademas nos permite añadir el menu.

Pues entonces a darle duro, que tengo que migrar varias decenas de botones !!!

Antonio/Daniel/Rolando/Ruben,

Muchas Gracias !

Saludos

PD : Voy a checar lo que me mandaste, he estado usando Captivate pero ya lo hicieron muuuy pesado. Gracias