Discussion:
[OT]Cambiar Forecolor en un label de VBA
(demasiado antiguo para responder)
zz
2006-05-07 14:49:03 UTC
Permalink
Estoy trabajando en un programa basado en excel , estoy evitando el uso de
los Commandbuttons normales[por cuestiones de diseño] y en su lugar uso
labels a los que les cambio el forecolro cuando pasa el puntero sobre de
ellos, pero me gustaria saber como sustituir el evento mousein y mouseout ya
que en vba estos controles carecen de dicho evento.

hasta ahorita esto es lo que he usado

en el evento mousemove

detecto si el punto X y Y del puntero estan dentro de las coordenadas del
label.

para esto obtengo el punto X yY del puntero y verifico si se encuentran
entre la mitad de la altura y la mitad del ancho del label.

pero solo cambian de color cuando el puntero pasa exactamente sobre la mitad
del label y muchas veces no se nota el cambio del forecolor y si no lo hago
asi se ve muy mal cuando pasa el puntero[parpadea] y en ocasiones se queda
del color con el que resalto el texto

agradezco su ayuda.

saludos.
Armin Saez
2006-05-08 21:41:11 UTC
Permalink
Hola
Post by zz
para esto obtengo el punto X yY del puntero y verifico si se encuentran
entre la mitad de la altura y la mitad del ancho del label.
Por que lo haces asi y no tomas el valor del rango del label???
es decir entre el inicio y el final del label???

Busca el post del dia 05-05-2006 "Clic en un shape", ahi encontraras
ejemplos que se pueden aplicar a las etiquetas.

Suerte
Armin Saez
Post by zz
Estoy trabajando en un programa basado en excel , estoy evitando el uso de
los Commandbuttons normales[por cuestiones de diseño] y en su lugar uso
labels a los que les cambio el forecolro cuando pasa el puntero sobre de
ellos, pero me gustaria saber como sustituir el evento mousein y mouseout
ya que en vba estos controles carecen de dicho evento.
hasta ahorita esto es lo que he usado
en el evento mousemove
detecto si el punto X y Y del puntero estan dentro de las coordenadas del
label.
para esto obtengo el punto X yY del puntero y verifico si se encuentran
entre la mitad de la altura y la mitad del ancho del label.
pero solo cambian de color cuando el puntero pasa exactamente sobre la
mitad del label y muchas veces no se nota el cambio del forecolor y si no
lo hago asi se ve muy mal cuando pasa el puntero[parpadea] y en ocasiones
se queda del color con el que resalto el texto
agradezco su ayuda.
saludos.
René David Ortiz
2006-05-08 22:16:51 UTC
Permalink
Hola zz,
Me parece que no es muy adecuada la forma en que lo estás haciendo, deberías
utilizar los eventos "MouseDown" y "MouseUp", el siguiente código de ejemplo
te simula el comportamiento de un botón, a lo mejor te sirve:

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
With Label1
.ForeColor = vbBlue
.Font.Bold = True
.BackColor = &HC0E0FF
.SpecialEffect = 2
End With
End Sub

Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
With Label1
.ForeColor = vbBlack
.Font.Bold = False
.BackColor = &H8000000F
.SpecialEffect = 1
End With
End Sub

Suerte,

René David Ortiz
El Salvador, C.A.

"zz" <***@nospam.com> wrote in message news:***@corp.supernews.com...
: Estoy trabajando en un programa basado en excel , estoy evitando el uso de
: los Commandbuttons normales[por cuestiones de diseño] y en su lugar uso
: labels a los que les cambio el forecolro cuando pasa el puntero sobre de
: ellos, pero me gustaria saber como sustituir el evento mousein y mouseout
ya
: que en vba estos controles carecen de dicho evento.
:
: hasta ahorita esto es lo que he usado
:
: en el evento mousemove
:
: detecto si el punto X y Y del puntero estan dentro de las coordenadas del
: label.
:
: para esto obtengo el punto X yY del puntero y verifico si se encuentran
: entre la mitad de la altura y la mitad del ancho del label.
:
: pero solo cambian de color cuando el puntero pasa exactamente sobre la
mitad
: del label y muchas veces no se nota el cambio del forecolor y si no lo
hago
: asi se ve muy mal cuando pasa el puntero[parpadea] y en ocasiones se queda
: del color con el que resalto el texto
:
: agradezco su ayuda.
:
: saludos.
:
:
zz
2006-05-09 02:02:16 UTC
Permalink
Es que si utilizo los eventos mousedown y moseup, unicamente de cambiara el
color del label cuando presionen los botones del raton, pero lo que yo
quiero es que cambien cuando el puntero pase por encima.

asi como los links en las pagina web
Post by René David Ortiz
Hola zz,
Me parece que no es muy adecuada la forma en que lo estás haciendo, deberías
utilizar los eventos "MouseDown" y "MouseUp", el siguiente código de ejemplo
Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
With Label1
.ForeColor = vbBlue
.Font.Bold = True
.BackColor = &HC0E0FF
.SpecialEffect = 2
End With
End Sub
Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
With Label1
.ForeColor = vbBlack
.Font.Bold = False
.BackColor = &H8000000F
.SpecialEffect = 1
End With
End Sub
Suerte,
René David Ortiz
El Salvador, C.A.
: Estoy trabajando en un programa basado en excel , estoy evitando el uso de
: los Commandbuttons normales[por cuestiones de diseño] y en su lugar uso
: labels a los que les cambio el forecolro cuando pasa el puntero sobre de
: ellos, pero me gustaria saber como sustituir el evento mousein y mouseout
ya
: que en vba estos controles carecen de dicho evento.
: hasta ahorita esto es lo que he usado
: en el evento mousemove
: detecto si el punto X y Y del puntero estan dentro de las coordenadas del
: label.
: para esto obtengo el punto X yY del puntero y verifico si se encuentran
: entre la mitad de la altura y la mitad del ancho del label.
: pero solo cambian de color cuando el puntero pasa exactamente sobre la
mitad
: del label y muchas veces no se nota el cambio del forecolor y si no lo
hago
: asi se ve muy mal cuando pasa el puntero[parpadea] y en ocasiones se queda
: del color con el que resalto el texto
: agradezco su ayuda.
: saludos.
Armin Saez
2006-05-09 14:05:51 UTC
Permalink
Hola
Pues utiliza el evento MouseMove de la etiqueta, de esta forma lo hago yo
cuando quiero aplicar efectos de color.
Tambien se pueden crear regiones sensibles en los Forms de la misma manera
que si fuera un control, solo aplicando las coordenadas necesarias.
Insisto en que sigas el hilo del post del 5-05-2006, hay ejemplos que se
pueden aplicar a tu problema.
Suerte
Armin Saez
Si aun tienes dudas me avisas y te envio un ejemplo.
Post by zz
Es que si utilizo los eventos mousedown y moseup, unicamente de cambiara
el color del label cuando presionen los botones del raton, pero lo que yo
quiero es que cambien cuando el puntero pase por encima.
asi como los links en las pagina web
Post by René David Ortiz
Hola zz,
Me parece que no es muy adecuada la forma en que lo estás haciendo, deberías
utilizar los eventos "MouseDown" y "MouseUp", el siguiente código de ejemplo
Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
With Label1
.ForeColor = vbBlue
.Font.Bold = True
.BackColor = &HC0E0FF
.SpecialEffect = 2
End With
End Sub
Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
With Label1
.ForeColor = vbBlack
.Font.Bold = False
.BackColor = &H8000000F
.SpecialEffect = 1
End With
End Sub
Suerte,
René David Ortiz
El Salvador, C.A.
: Estoy trabajando en un programa basado en excel , estoy evitando el uso de
: los Commandbuttons normales[por cuestiones de diseño] y en su lugar uso
: labels a los que les cambio el forecolro cuando pasa el puntero sobre de
: ellos, pero me gustaria saber como sustituir el evento mousein y mouseout
ya
: que en vba estos controles carecen de dicho evento.
: hasta ahorita esto es lo que he usado
: en el evento mousemove
: detecto si el punto X y Y del puntero estan dentro de las coordenadas del
: label.
: para esto obtengo el punto X yY del puntero y verifico si se encuentran
: entre la mitad de la altura y la mitad del ancho del label.
: pero solo cambian de color cuando el puntero pasa exactamente sobre la
mitad
: del label y muchas veces no se nota el cambio del forecolor y si no lo
hago
: asi se ve muy mal cuando pasa el puntero[parpadea] y en ocasiones se queda
: del color con el que resalto el texto
: agradezco su ayuda.
: saludos.
René David Ortiz
2006-05-09 14:23:33 UTC
Permalink
Pues, utiliza él código que te pasé en el evento "MouseMove" del Label y del
UserForm.
Tambien cambia el valor de la propiedad "MousePointer" del Label a 99 y
establece en la propiedad "MouseIcon" el cursor de la mano (en mi pc se
llama: "h_arrow"); lo encontrarás en la carpeta "Cursores" dentro de la
carpeta "Windows (ó WINNT según sea tu sistema operativo)".

Suerte,


"zz" <***@nospam.com> wrote in message news:***@corp.supernews.com...
: Es que si utilizo los eventos mousedown y moseup, unicamente de cambiara
el
: color del label cuando presionen los botones del raton, pero lo que yo
: quiero es que cambien cuando el puntero pase por encima.
:
: asi como los links en las pagina web
:
:
:
:
: "René David Ortiz" <rortiz-ARROBA-swdeca.com> wrote in message
: news:***@TK2MSFTNGP05.phx.gbl...
: > Hola zz,
: > Me parece que no es muy adecuada la forma en que lo estás haciendo,
: > deberías
: > utilizar los eventos "MouseDown" y "MouseUp", el siguiente código de
: > ejemplo
: > te simula el comportamiento de un botón, a lo mejor te sirve:
: >
: > Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As
: > Integer, ByVal X As Single, ByVal Y As Single)
: > With Label1
: > .ForeColor = vbBlue
: > .Font.Bold = True
: > .BackColor = &HC0E0FF
: > .SpecialEffect = 2
: > End With
: > End Sub
: >
: > Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As
: > Integer, ByVal X As Single, ByVal Y As Single)
: > With Label1
: > .ForeColor = vbBlack
: > .Font.Bold = False
: > .BackColor = &H8000000F
: > .SpecialEffect = 1
: > End With
: > End Sub
: >
: > Suerte,
: >
: > René David Ortiz
: > El Salvador, C.A.
: >
: > "zz" <***@nospam.com> wrote in message
: > news:***@corp.supernews.com...
: > : Estoy trabajando en un programa basado en excel , estoy evitando el
uso
: > de
: > : los Commandbuttons normales[por cuestiones de diseño] y en su lugar
uso
: > : labels a los que les cambio el forecolro cuando pasa el puntero sobre
de
: > : ellos, pero me gustaria saber como sustituir el evento mousein y
: > mouseout
: > ya
: > : que en vba estos controles carecen de dicho evento.
: > :
: > : hasta ahorita esto es lo que he usado
: > :
: > : en el evento mousemove
: > :
: > : detecto si el punto X y Y del puntero estan dentro de las coordenadas
: > del
: > : label.
: > :
: > : para esto obtengo el punto X yY del puntero y verifico si se
encuentran
: > : entre la mitad de la altura y la mitad del ancho del label.
: > :
: > : pero solo cambian de color cuando el puntero pasa exactamente sobre la
: > mitad
: > : del label y muchas veces no se nota el cambio del forecolor y si no lo
: > hago
: > : asi se ve muy mal cuando pasa el puntero[parpadea] y en ocasiones se
: > queda
: > : del color con el que resalto el texto
: > :
: > : agradezco su ayuda.
: > :
: > : saludos.
: > :
: > :
: >
: >
:
:

Loading...