![]() |
Nuevo evento
Que tal amigos...
Tal vez esta sección del foro sepa la respuesta. ¿Es posible adicionarle un evento a un componente? La cosa es así: el componente nativo TAnimate para mostrar archivos AVI tienen pocos eventos (los necesarios) como OnShow y OnHide entre otros. Yo necesito responder a la acción de acer Click sobre éste, o sea, generar un evento OnClick y atender a este. ¿Cómo se hace? |
Sí que lo es. Es relativamente sencillo, lo complicado puede ser elegir en qué momento dispararlo. Un evento es una propiedad de tipo procedure of object. Puedes poner a tu componente una propiedad de tipo tnotifyevent directamente o crearte un tipo
type procedure (sender: tobject; parametros.... ) of object Luego en la parte que elijas del componente lo disparas. Normalmente se hace en función de algún mensaje recibido o en el método set de alguna propiedad. Esto no es para explicarlo en cuatro líneas. Te recomiendo rastrear la VCL por ejemplo mirando el onclick de un tcontrol. Es como se aprende. Un saludo, F.T.G. |
Cita:
Gracias por tu respuesta, pero sinceramente no entendí nada de lo que dijite. ¿Me podés hacer un ejmplo con el TAnimate, así es más fácil? |
Lo que dijo Kafu, es que es muy fácil definir un evento, pero hay que saber cuando dispararlo, de nada sirve tener eventos que nunca se disparen:
Código:
TMiClase = class(TWinControl) Código:
TMiAnimate = class(TAnimate) |
Disculpa mi forma de expresarme, tengo la capacidad de embrollar lo sencillo (es que soy de letras).
El camino que te indica Delphi.com.ar es el apropiado, diría yo. Al publicar esa propiedad-evento ya no necesitas crearte uno nuevo. No te puedo decir si el animate responderá como tcontrol al hacer click y disparará el doclick, pero si no es así (yo tampoco lo he probado), rastrea el doclick o doonclick en tcontrol a ver cómo y en qué circunstancias es disparado. Espero no haberte liado más, un saludo, |
Cita:
Yo lo he intentado, puse sobre un Form vacío un TAnimate con su animación ya caragada como correspnde y declaré la otra variable para capturar el evento pero no me funciona. Por favor, fijate el código y orientame porque no entiendo. Código:
type |
Es que la idea no es heredarlo de tu form, sino del TAnimate... Si lees atentamente lo que he escrito anteriormente esta todo dicho!
Puedes crearlo en tiempo de ejecución si es que no quieres registrar un componente nuevo, haciendo algo como esto: Código:
unit Unit1; Saludos! |
La franja horaria es GMT +2. Ahora son las 05:31:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi