FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear un evento propio
Hola, me gustaría saber si es posible realizar un evento propio en Delphi, es decir, yo tengo un código que quiero que se ejecute cada vez que una variable cambia de valor, por ejemplo:
No se si me explico. Saludos. |
#2
|
||||
|
||||
¡Hola!
Existen varias formas de implementar lo que deseas, una de ellas es convertir a Cadena en una propiedad de una clase. Pero creo que lo mejor ahora sería que ahondaras un poco sobre lo que quieres conseguir. ¿Cuál es la motivación? ¿Por dónde va esa idea? Saludos. Al González. |
#3
|
||||
|
||||
Hola noob,
Como dice Al, sería oportuno que nos dieras más detalle. Formalmente un evento se hace aplicando punteros a métodos. Por ejemplo:
Luego tu clase debe definir un atributo de dicho de evento:
Ahora viene lo interesante. Tenemos el tipo, más no cuando salta. Dices que se produce al cambiar una cadena. Formalmente, un método hace disparar el evento. Pero he aquí que en realidad el evento está incompleto. Necesitamos darle una respuesta, en otro caso no debería suceder. Lo de esperar es que uno pueda implementar su rutina, pero tranquilamente uno puede definir un método que tenga la misma declaración que el tipo del evento como respuesta al mismo. Supongamos que hacemos uso de propiedades para cambiar el texto de la cadena:
SetCadena es un método privado, y en el hacemos que se dispare el evento:
Ahora si estamos en condiciones de darte Rta al evento y asociarlo. 1) Disparará un método propio de la clase: Para ello se necesita definir un método que tenga la misma declaración del puntero a método en la clase:
Asociamos el evento a la clase, (tal vez en el constructor):
2) Y como dije, lo normal es que la clase no sea la "dueña" de la respuesta. Por tanto el método formalmente se define fuera. Necesitamos asignarle el método de alguna manera. Por ejemplo, propiedades:
Y en base a eso, podemos hacer esto:
En este caso, La clase solita dispará el evento y aplicará las sentencias definidas en MiRutina. MiRutina puede ser un método ajeno a la clase TMiClase, necesita ser un método, con la misma declaración más puede ser declarado en otro lado. Por ejemplo:
En este caso, es un método definido en el Form1, y lo que hace es visualizar la cadena que cambió en un label. Espero que se entienda, Sugiero una leída al capítulo dedicado a los eventos del libro La Cara Oculta de Delphi 4. Saludos, |
#4
|
|||
|
|||
Hola Delphius, he seguido tus indicaciones pero creo que algo me falla.
Tengo esto: Unit1.pas (mi formulario)
MiUnit.pas
Saludos. Última edición por noob fecha: 30-01-2009 a las 19:36:17. |
#5
|
||||
|
||||
Pues debería funcionar. A vista rápida no veo error. Prueba este código, verás que funciona apropiadadamente:
Unidad donde está la clase
Unidad del form:
Saludos, |
#6
|
||||
|
||||
Hasta, incluso funciona si se define dentro de la propia clase la rutina:
Y ahora en el create del form no hacemos la asignación:
Y si no le comentamos la acción notarás que realiza la rutina que defines en tu form. Saludos, |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Quiero crear mi propio Script! | PiornoCKA&G | Varios | 4 | 02-01-2007 18:39:19 |
Crear mi propio tipo de archivo. | JuanErasmo | C++ Builder | 3 | 18-08-2005 15:53:05 |
Crear tabla con mi propio tipo.. | dmariscal | Conexión con bases de datos | 6 | 20-04-2004 20:05:37 |
Crear mi propio export filter | rfernandez | Impresión | 1 | 05-02-2004 16:52:52 |
Ayuda para crear mi propio IDE | antonio | Varios | 2 | 03-06-2003 14:07:32 |
|