Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   escribir en label al pasar por una imagen (https://www.clubdelphi.com/foros/showthread.php?t=13520)

agustincs 21-08-2004 07:25:28

escribir en label al pasar por una imagen
 
pues resulta que estoy creando un programa, y en vez de usar los botones normales, he usado imagenes para darle una imagen un poco mas bonita. Para las acciones uso el evento onclick. Mi pregunta es: estaba intersado en que al pasar el raton por encima de cada una de las imagenes "boton" me apareciera en una esquina un pequeño texto explicando para que sirve esa opcion. Lo tenia pensado hacer con una label e ir cambiando su caption, pero me encuentro con 2 problemas: no se que evento es el que controla que el raton pase por la imagen para que en ese momento escriba el caption (prove con mouseup, mousedown.. etc.. pero ninguno de esos) y el otro es que aunque encuentre el evento, como hago para que una vez el raton deje de estar encima de la imagen, la caption la borre??

lo mas importante, que evento es el que controla que el puntero del raton esta pasando por encima de la imagen=?=

muchas gracias

Shion 21-08-2004 09:22:21

Holapara tu solucion hay un evento llamado OnMouseMove, pruebalo!!!

Raptor 21-08-2004 19:48:33

hola a todos

Que te pareces si utiliza propiedad hint, porque segun dice solo quiere explicacion de que hace tu "boton"

coloca el mensaje la propiedad Hint, y luego activa la Showhint ponla true

agustincs 22-08-2004 07:42:58

gracias a los dos
la opcion hint no me sirve, ya que tengo avilitado un cuadrado especial para la ayuda y por tanto quiero que aparezca ahi.
el evento que me dijiste si me mouseonmove si me sirve, ahora solo tengo un pequeño problema. lo que hago es que en ese evento, indico que el caption de una etiqueta coja un texto. lo que me interesa sabes que como hacer para que al dejar de pasar el raton por encima el caption vuelva a estar en blanco. Es decir el funcionamiento seria el siguiente: pasa el raton por encima y el caption pone la explicacion, deja de estar el raton encima, el caption vuelve a estar en blanco

Sirkius 22-08-2004 09:38:06

El TImage no tiene el evento OnMouseOut que te hubiese venido de perlas. Puedes intentar buscar algún control que lo implemente o a lo mejor Windows si que lanza ese evento, pero el control no lo tiene implementado... no sé, es cuestion de buscar...

xeroq 22-08-2004 17:25:03

La solución es simple,limpias el Label en el OnMouseMove del resto de los controles,incluyendo la propia Forma (compartes el mismo evento)

Sirkius 23-08-2004 17:04:09

Cita:

Empezado por xeroq
La solución es simple,limpias el Label en el OnMouseMove del resto de los controles,incluyendo la propia Forma (compartes el mismo evento)

Sí, pero es una solución muy cutre, reconocelo. Puedes pasar a otra aplicacion mediante ALT+TAB, volver y dejar el raton fuera del formulario, y todavia sigue el mensaje.

roman 23-08-2004 18:21:30

Cita:

Empezado por agustincs
la opcion hint no me sirve, ya que tengo avilitado un cuadrado especial para la ayuda y por tanto quiero que aparezca ahi.

No sé a qué te refieres exactamente con un "cuadrado especial" pero pienso que puedes lograr lo que deseas perfectamente con la propiedad Hint en lugar de complicarte la vida con OnMouseMove. Lo único que tienes que saber es cómo usar dicha propiedad.

La VCL de Delphi lleva un registro de por dónde va pasando el cursor del ratón y cada vez que pasa por un control genera el evento OnHint del objeto Application. En este evento tienes disponible la propiedad Application.Hint que contiene el Hint del control sobre el que estás. Si estás pasando sobre la imágen entonces Application.Hint contendrá el hint de la imagen. Al salir de la imagen, si el control al que llegas no tiene hint entonces Application.Hint estará vacío.

De esta forma, suponiendo que por "cuadrado especial" entiendes un label podrías poner el evento OnHint así:

Código Delphi [-]
Label1.Caption := Application.Hint;

El problema aquí será si usas la propiedad Hint para otros controles además de las imágenes pues entonces tu "cuadrado especial" mostrará también los hints de dichos controles. Esto puede ser lo que quieres pero en caso contrario puedes determinar en el evento OnHint si el control sobre el que estás es o no una imagen:

Código Delphi [-]
var
  Control: TControl;

begin
  Control := ControlAtPos(ScreenToClient(Mouse.CursorPos), true);
  if Control is TImage then
    Label1.Caption := Application.Hint
  else
    Label1.Caption := '';
end;

Lo que resta es saber cómo asignas este evento OnHint. En las últimas versiones de Delphi puedes usar el objeto TApplicationEvents (en la paleta Aditional) y asignar ahí el evento OnHint. En versiones anteriores tendrás que crear tú mismo un método de tu formulario:

Código Delphi [-]
procedure AppHint(Sender: TObject);

y asignarlo manualmente en el evento OnCreate:

Código Delphi [-]
Application.OnHint := AppHint;

// Saludos


La franja horaria es GMT +2. Ahora son las 15:59:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi