SBUTTON con lMouseOver

SBUTTON con lMouseOver

Postby Loren » Tue Nov 03, 2009 3:57 pm

Compañeros

utilizando la clase TSBUTTON de Manuel Mercado, cambio el color de los button en tiempo de ejecución, pero no consigo cambiar el color del button cuando paso el ratón por encima de ellos.

El codigo es:
Code: Select all  Expand view

Define Dialog...
...
  REDEFINE SBUTTON odia[ 7] ID 4007 OF ocalen Font ofont NOBORDER ROUNDRECT
  REDEFINE SBUTTON odia[ 8] ID 4008 OF ocalen Font ofont NOBORDER ROUNDRECT
  REDEFINE SBUTTON odia[ 9] ID 4009 OF ocalen Font ofont NOBORDER ROUNDRECT
  REDEFINE SBUTTON odia[10] ID 4010 OF ocalen Font ofont NOBORDER ROUNDRECT
...
Activate dialog...
 


Y en tiempo de ejecución cambio los colores de esta forma:
Code: Select all  Expand view

    odia[x]:Setcolor(CLR_HGRAY, iif( odia[x]:lMouseOver, rgb(240,205,240),rgb(220,145,220)))
 


...Al pasar el ratón por encima del bottón este NO cambia. ¿ Que hago mal ?
...Sin embargo si establezco el color en el REDEFINE funciona perfectamente. Así:
Code: Select all  Expand view

REDEFINE SBUTTON odia[ 7] ID 4007 OF ocalen Font ofont NOBORDER ROUNDRECT COLORS CLR_HGRAY ,{ |odia| If( odia:lMouseOver, rgb(240,205,240),rgb(220,145,220)) }
 


Mil gracias.
LORENZO
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: SBUTTON con lMouseOver

Postby mmercado » Tue Nov 03, 2009 5:26 pm

Hola Lorenzo:
Loren wrote:utilizando la clase TSBUTTON de Manuel Mercado, cambio el color de los button en tiempo de ejecución, pero no consigo cambiar el color del button cuando paso el ratón por encima de ellos.

Prueba lo siguiente:
odia[x]:Setcolor( { 1, 2 }, {CLR_HGRAY,iif( odia[x]:lMouseOver,rgb(240,205,240),rgb(220,145,220))} )

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: SBUTTON con lMouseOver

Postby Loren » Tue Nov 03, 2009 10:14 pm

Maestro Manuel,

desgraciadamente su propuesta no funcionó. De esta manera me pinta un GRADIENT en cada button.

No obstante, mil gracias por su tiempo.
LORENZO.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: SBUTTON con lMouseOver

Postby Loren » Wed Nov 04, 2009 1:04 pm

Compañeros:

¿ Alguien me puede orientar ?
¿ Alguna otra sugerencia, maestro Manuel ?

Mil gracias.
LORENZO.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: SBUTTON con lMouseOver

Postby mmercado » Wed Nov 04, 2009 1:25 pm

Loren wrote:¿ Alguien me puede orientar ?
¿ Alguna otra sugerencia, maestro Manuel ?

Disculpa Lorenzo, al parecer ya estaba cansado en mi respuesta anterior, lo siguiente seguramente te funcionará:

odia[x]:Setcolor(CLR_HGRAY,{||iif( odia[x]:lMouseOver,rgb(240,205,240),rgb(220,145,220))})

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: SBUTTON con lMouseOver

Postby Loren » Wed Nov 04, 2009 10:27 pm

Maestro,

no quisiera convertirme en una pesadilla suya... pero me marca el siguiente error:

"Descripcion del error: Error BASE/1003 No existe la variable: X" .. y a continuación aborta el EXE.

Mis conocimientos son limitados y no llegan hasta este nivel.

Un saludo.
LORENZO
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: SBUTTON con lMouseOver

Postby mmercado » Thu Nov 05, 2009 4:21 am

Hola Lorenzo:
Loren wrote:no quisiera convertirme en una pesadilla suya... pero me marca el siguiente error:
"Descripcion del error: Error BASE/1003 No existe la variable: X" .. y a continuación aborta el EXE.

Strike dos !!! :(

Espero no me cantes el tercer strike :D , prueba de esta forma:
odia[x]:Setcolor(CLR_HGRAY,{|oBtn|iif( oBtn:lMouseOver,rgb(240,205,240),rgb(220,145,220))})

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: SBUTTON con lMouseOver

Postby Loren » Thu Nov 05, 2009 8:19 am

Manuel,

Lamento decirle "Strike tres!!"

Me casca con el siguiente error:

Descripcion del error: Error BASE/1004 Class: 'NIL' has no exported method: LMOUSEOVER
Args:
[ 1] = U

Stack Calls
===========
llamada desde: => LMOUSEOVER(0)


El PRG trata de un calendario y acabo de darme cuenta que cuando refresco el calendario pasando de un mes a otro, si el mouse se encuentra (en el momento del refresco) encima de un día cualquiera, este me lo dibuja respetando el color LmouseOver, aunque el color se queda estático y no varía si muevo el ratón. ¿Será esta alguna pista?

Mil gracias por su dedicación, colaboración y tiempo invertido.
LORENZO.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: SBUTTON con lMouseOver

Postby mmercado » Thu Nov 05, 2009 6:37 pm

Hola Lorenzo:

Me rindo, con mucho gusto te ayudaré si me muestras el programa autocontenido dode pueda reproducir el error.

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: SBUTTON con lMouseOver

Postby noe aburto » Tue Nov 10, 2009 12:23 am

COLOR_BUTTON {|oBtn|If(oBtn:lMouseOver.or.oBtn:lFocused,COLOR_MAGENTA,If(oBtn:lPressed,COLOR_GRIS,COLOR_NEGRO))},{|oBtn|If(oBtn:lMouseOver.or.oBtn:lFocused,COLOR_SMAGENTA,If(oBtn:lPressed,COLOR_BLANCO,COLORX))}
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: SBUTTON con lMouseOver

Postby MarioG » Tue Nov 10, 2009 12:22 pm

Lorenzo
Con la TSButton 6.3, y desde varias versiones anteriores, lo uso asi:
Code: Select all  Expand view
{|oBtn| if( !oBtn:lActive, CLR_GRAY, if( oBtn:lMouseOver, CLR_BMNPPL, CLR_HBLUE )) }

y siempre funciona Ok.

Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: SBUTTON con lMouseOver

Postby mmercado » Wed Nov 11, 2009 9:26 am

Hola Lorenzo:

Después de revisar y probar tu programa, las llamadas al método SetColor en la función DibujaDias quedan como sigue:
Code: Select all  Expand view
  If found()
      odia[x]:Setcolor({||iif(Dow(FecIni)=1,CLR_HRED,CLR_GREEN)}, ;
                       {|oDia|Iif( oDia:lMouseOver, aDeColores[oListacol:nAt,2],rgb(255, 255,128))})
   Else
      odia[x]:Setcolor({||iif(Dow(FecIni)=1,CLR_HRED,iif(Month(FecIni)!=Month(FecActu),CLR_HGRAY,CLR_WHITE))},;
                       {|oDia|iif( oDia:lMouseOver,aDeColores[oListacol:nAt,1],aDeColores[oListacol:nAt,2])})
 

Avísame del resultado.

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: SBUTTON con lMouseOver

Postby Loren » Wed Nov 11, 2009 10:40 pm

Maestro,

es curioso, pero a mí me muestra el siguiente error:
Code: Select all  Expand view
  Descripcion del error: Error BASE/1004  Class: 'NIL' has no exported method: LMOUSEOVER
   Args:
     [   1] = U  

Stack Calls
===========
   llamada desde:  => LMOUSEOVER(0)
   llamada desde: C:\programacion\audicion\prg\calendar.prg => (b)DIBUJADIAS(140)


Incluso probando como recomiendan Mario G y Noe Aburto, también me genera el mismo error.

No obstante, al ser un mero problema "estético" y no funcional, no me genera mucha preocupación, mas bien curiosidad.
Mil gracias.
LORENZO
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: SBUTTON con lMouseOver

Postby MarioG » Wed Nov 11, 2009 10:44 pm

Loren
Entonces, quizás, deberías bajar la última versión y compilarla (salvo que sea la que tenes compilada :cry: )

saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: SBUTTON con lMouseOver

Postby mmercado » Wed Nov 11, 2009 11:39 pm

Hola Lorenzo:
Loren wrote:Maestro,

es curioso, pero a mí me muestra el siguiente error:
Code: Select all  Expand view
  Descripcion del error: Error BASE/1004  Class: 'NIL' has no exported method: LMOUSEOVER
   Args:
     [   1] = U  

Stack Calls
===========
   llamada desde:  => LMOUSEOVER(0)
   llamada desde: C:\programacion\audicion\prg\calendar.prg => (b)DIBUJADIAS(140)

Incluso probando como recomiendan Mario G y Noe Aburto, también me genera el mismo error.
No obstante, al ser un mero problema "estético" y no funcional, no me genera mucha preocupación, mas bien curiosidad.

El problema no es de TSButton, tienes que revisar la lógica de tu programa.

Aquí te muestro la parte que me enviaste de tu programa funcionando al 100% en lo que a TSButton se refiere:
http://www.mediafire.com/file/iyi2uknmnjz/Calendar.zip

Un abrazo.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 84 guests