Página 1 de 1

Evento OnMouseOver

Publicado: Mié May 30, 2007 2:47 pm
por Angel
Saludos! Este es mi primer mensaje en el foro privado de Xailer.
La cuestión:
Estoy utilizando en mi aplicación botones de la clase TBtnBmp, y
intentaba que cuando el cursor pase por encima de dichos botones, poder
realizar "cambios" sobre ellos (Ej: Resaltar el color, cambiar el BMP,
etcétera).
¿Este evento no está presente en las clases de Xailer? El evento más
parecido que he encontrado ha sido OnMouseMove.

Evento OnMouseOver

Publicado: Mié May 30, 2007 5:45 pm
por ignacio
Ángel,
Efectivamente, ese es el evento a capturar.
Un saludo,
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:465d725c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Saludos! Este es mi primer mensaje en el foro privado de Xailer.
>
> La cuestión:
> Estoy utilizando en mi aplicación botones de la clase TBtnBmp, y intentaba
> que cuando el cursor pase por encima de dichos botones, poder realizar
> "cambios" sobre ellos (Ej: Resaltar el color, cambiar el BMP, etcétera).
>
> ¿Este evento no está presente en las clases de Xailer? El evento más
> parecido que he encontrado ha sido OnMouseMove.

Evento OnMouseOver

Publicado: Mié May 30, 2007 7:24 pm
por jfgimenez
Ángel,
> Estoy utilizando en mi aplicación botones de la clase TBtnBmp, y intentaba
> que cuando el cursor pase por encima de dichos botones, poder realizar
> "cambios" sobre ellos (Ej: Resaltar el color, cambiar el BMP, etcétera).
Para cambiar el bitmap no necesitas hacer nada especial; basta con asignar
el bitmap que quieras al estado 'hot' del botón (el segundo bitmap que
aparece al pulsar en la propiedad 'oBitmaps' del control en el inspector de
objetos).
Pero lo de resaltar el color... me temo que los botones tienen el color de
fondo que tienen, y no se puede cambiar. Y si además estás en XP con temas,
entonces no puedes cambiar ni el color del texto.
> ¿Este evento no está presente en las clases de Xailer? El evento más
> parecido que he encontrado ha sido OnMouseMove.
Sí, es el más parecido, pero no funciona como creo que estás pensando.
OnMouseMove se dispara cuando el cursor se mueve sobre el control, pero no
puedes saber cuando el cursor abandona el área que cubre el control para
p.ej. volver a un estado de reposo. Y me temo que no hay ningún evento del
tipo OnMouseLeave simplemente porque el API no lo contempla.
Para controlar esta situación, hay que 'capturar' el ratón llamando a
SetCapture(). Pero si utilizas esta función con controles que gestionan
ellos mismos su estado 'hot', como es el caso, vas a tener problemas. En
casos así, es mejor crear un control desde cero y dotarlo de la
funcionalidad que se desee procurando no interferir con el comportamiento
estándar de su clase padre.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info