OnClick dinamicamente
Hola a tod@.
Verán hace tiempo hice un programa donde utilizaba la propiedad OnClick de los TImages de las imágenes que cargaba para, mostrar un mensaje, ir a una dirección de Internet... esto lo hacia de forma estática y en tiempo de ejecución mostraba la imagen mediante el Bitmap.LoadFromFile(). Con ganas de mejorar quiero hacer esto mismo pero dinamicamente:
Al ejecutar lo que consigo es siempre el mismo mensaje ''prueba Imagen' pero mi intención es que cada imagen que creo le pase (no se como) un showmessage('Timage:'+xx ) diferente a la propiedad OnClick. ¿Pueden echarme una mano con esto por favor?. |
Cita:
Para ello puedes usar el parámetro Sender, que será diferente para cada imagen sobre la que pulses. En realidad ese Sender será exactamente el componente TImage sobre el que has pulsado. Lo único que debes hacer es realizar un CAST del objeto Sender para poder utilizarlo. Cambia tu código y prueba esto:
Igual que he accedido à la propiedad Name, puede acceder al resto del componente. |
Muchas gracias Neftali por tu ayuda, la modificación que me sugeriste me daba error:
dejo el código por si a otro compañero le ocurre lo mismo.
Nos obstante una consulta, si cada imagen fuera ligada a una url, una reproducción de sonido, otra imagen etc... es decir a algo mas trascendente ¿seria posible asignar ese "evento" a su correspondiente imagen cuando se crea el objeto TImage?, me explico... En una BBDD tenemos X fotos esas fotos están ordenadas y se corresponden con el sonido Y cuya dirección esta almacenada también en la BBDD de manera que: Foto1 -> c:\.....\animales\leonsabana.wav Foto2 -> c:\.....\motorV6.wav ... Corrígeme por favor si me equivoco, para conseguir esto, como TImagen no tiene una propiedad para almacenar texto, ¿debería sobrecargar la clase?. De nuevo muchas gracias por echarme una mano. |
Perdón. He cometido un error en el código al escribirlo.
En lugar de esto:
Quería poner esto (es importante el operador IS en lugar del =):
Con eso comprobamos que el Sender sea de la clase correcta. No debería, pero eso evita que falle la línea siguiente al realizar el CAST:
|
Cita:
No la tienen, como bien dices. Si con un Integer te vale, los TImage y el resto de componentes poseen una propiedad genérica para estas cosas llamada Tag. Que los programadores solemos usar para estas cosas. La otra opción, como bien dices, es ampliar la clase para añadir esa propiedad. |
De nuevo gracias por la sugerencia y aclaración, no pensé en la propiedad Tag la cual se podría utilizar como una especie de puntero hacia a una lista.
Muchas gracias por tu ayuda.^\||/ |
Estimado barakuda, si me permite le propongo otra opción...
Este método lo he usado cuando requiero mostrar imagenes en algunas aplicaciones... Consiste en utilizar un TListview y TImageList...
La imagen adjunta muestra el resultado... Espero le ayude... Saludos cordiales |
Estimado barakuda, no me percate que era en foro de Firemonky, talvez el código que le indique no funcione correctamente...:(
|
La franja horaria es GMT +2. Ahora son las 21:46:19. |
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