PDA

Ver la Versión Completa : Cambio de orden de ejecución de eventos


JM75
31-01-2007, 16:29:56
Hola a todos, necesito saber si hay alguna manera de alterar el orden de le ejecución de los eventos, o que un evento concretamente hacer que no salte en su momento.

Me explico un poco más. Tengo dos formularios (form1,form2) visibles del mismo tipo, y en el código he puesto el "form1.free" después de hacer el "showmodal". Necesito que cuando cierre form1 se ejecute primero el destructor sobrecargado antes de que se ejecute el "activate" de form2.

A groso modo, cuando cierro form1 los métodos se ejecutan en el siguiente orden:
form1.onclose
form1.deactivate
form2.activate
form1.free

Lo que necesito es que form2.activate se ejecute el último, bien cambiando el orden o bien indicando que no se ejecute en su momento para llamarlo más tarde.

Gracias de antemano.

Lepe
31-01-2007, 16:36:38
hola jm75 ten cuidado, después de Form1.Free no se puede llamar a ningún otro evento o método de Form1, porque ya no existe, y una llamada a cualquier método provocará una Violación de Acceso a memoria.

Para anular un evento si lo tienes fácil:

Form1.OnActivate := nil;


Para asignar un evento:

Form1.OnActivate := Form1Activate;


Ojo con esto:

Form1.OnActivate := Form2.Form2Activate;
Form2.free;

porque al activarse de nuevo el Form1 obtendrás un Access Violation.

Saludos

JM75
31-01-2007, 16:47:36
Hola Lepe, el método al que quiero llamar es "form2.activate", siendo form2 un objeto que existe -y está visible- distinto del objeto form1, con lo que al hacer "form1.free" el objeto form2 existe todavía.

Gracias.