Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Evento que no espera (https://www.clubdelphi.com/foros/showthread.php?t=15204)

Juditia 14-10-2004 08:38:24

Evento que no espera
 
¡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

Cita:

Empezado por Juditia
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

Ya esta solucionado
 
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 ;) .


La franja horaria es GMT +2. Ahora son las 06:22:43.

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