PDA

Ver la Versión Completa : Evento que no espera


Juditia
14-10-2004, 08:38:24
¡Buennaaaasss :D! Tengo el siguiente procedimiento. Mi problema es que durante FOnBorrarClic(Self), se destruye el componente que lanza el evento, lo que me deja el programa colgado porque intenta seguir la línea de ejecución de un elemento que ya no existe.
Lo que quiero es que cuando llame a FOnBorrarClic(Self), no se quede esperando a que finalice, ¿es esto posible? Supongo que no, pero me hace falta porque el componente no lo he diseñado muy bien (:rolleyes: ahora me doy cuenta claro).

procedure TVarPanel.BorrarClic(Sender:TObject);
begin
//si el usuario ha asignado algo al evento onclick pues se ejecuta
if Assigned(FOnborrarclic) then FOnBorrarClic(Self);
end;

Neftali [Germán.Estévez]
14-10-2004, 11:09:32
Lo que quiero es que cuando llame a FOnBorrarClic(Self), no se quede esperando a que finalice, ¿es esto posible?
No he acabado de entender muy bien lo que necesitas (lo de que no se espere a que finalize), de todas formas puedes echerle un vistazo a la propiedad ComponentState del componente que estás borrando; Aparecen una serie de estados que tal vez te puedan servir para hacer comprobaciones;
En ejecución normal ésta propiedad estará vacía, cuando el componente se está destruyendo debería contener el valor: csDestroying

Échale un vistazo a la ayuda y verás el resto de posibilidades.

Juditia
14-10-2004, 16:43:23
Bueno, resulta que lo que yo pretendía no se puede hacer. He optado por rediseñar el componente porque estaba mal hecho.

No os recomiendo destruir desde un manejador de evento, el objeto que lanzó dicho evento. Lo raro es que algunas veces funcionaba y otras no.

En fin, doy por finiquitado el asunto.

Gracias por tu interés Neftali ;) .