crear un evento en una clase?
hola,
mi problema es que no logro comprenderlo y no puedo hacer que funcione, parece que es muy simple, pero bueno... espero de su ayuda. esto está dentro de una unidad que la utilizo en un form. cada vez que presiono un boton, se ejecuta en un thread para enviar una archivo. Luego de que termina de enviar el archivo necesito saber que el archivo fue enviado. Gracias |
Por favor utiliza TAG's cuando añadas código Delphi a los mensajes.
¿Has ejecutado paso a paso el código? ¿Se lanza el evento? ¿Lo has asignado a la instancia del objeto (sea en diseño o en ejecución)? |
No estas creando una instancia de EnviarFila, sino heredando de ella.
La definición de EnviarFila está bien, lo que tienes que cambiar es el uso en el Form1. Tienes que instanciar EnviarFila y asignar ese evento:
la asignación "x.OnFinish := AlTerminar;" es idéntico a cuando tú en el inspector de objetos, das un doble clic en un evento para "rellenarlo con código". En principio, para ejecutar un TThread, se debe usar su método Execute, tú usas PushFile, ya eso no es cuestión de eventos, sino de TThreads. Si no funciona como esperas, pon el código completo del TThread. Saludos |
Hola,
eso mas o menos quise hacer en un momento pero no se que problema de diferentes tipo me salia. Puede ser que esto cuando es en un componente lo hace en la extensión dfm? Buego, ahora lo voy a probar y veremos. muchas Gracias. |
Comentarios adicionales:
Si la firma de tu evento va a ser (Sender: TObject), no veo razón para declarar un nuevo tipo. Podes usar el tipo TNotifyEvent, que parece el adecuado para tu caso. Luego, si existe la posibilidad de enviar varios archivos concurrentemente, debes realizar algún tipo de sincronización para hacer el código "Thread Safe", sobre todo si en la implementación del método AlTerminar vas a interactuar con la VCL. En ese caso, es mejor que este método se ejecute dentro del hilo principal de la aplicación. Recordá que la VCL no es Thread Safe y esta responsabilidad recae en vos (para mi, tiene sentido). Si no tenes idea de lo que estoy hablando, mirá la ayuda del método Synchronize de la clase TThread, creo que te aclarará las cosas. Hasta luego. |
La franja horaria es GMT +2. Ahora son las 20:27:23. |
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