Delphi - Cerrar una form desde otra

 
Vista:

Cerrar una form desde otra

Publicado por E.Martínez (3 intervenciones) el 30/06/2003 10:36:16
Hola a todos.
Puede que os parezca una tonteria mi pregunta, pero bueno vamos al grano.

Quiero tener en mi aplicación una form con una barra de progreso (en este caso la form2), para poder cargarla en cualquier momento, por sí existe algún proceso que lleve su tiempo y para que al usuario no le parezca que l\'aplicación esta colgada.
El problemilla, es que cada vez que cierro la Form2, se lanza el evento \"onActivate\" de la Form1. La Form1 es Modal. Solo queria saber sí, podria evitar que sucediese esto, de alguna otra forma mas elegante, que no sea controlando el codigo del evento onActivate, mediante un simple semáforo.
Se que puede parecer una tonteria este tema, pero os agradeceria mucho vuestra ayuda.

Saludos a todos y gracias.

Código del ejemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
I : integer;
begin
Form2.Show;
while Form2.Visible do
begin
For I:=1 to 10000 do
Begin
Form2.ProgressBar1.Position := I;
Application.ProcessMessages;
end;
Form2.Close;
end;
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cerrar una form desde otra

Publicado por Delfino (1216 intervenciones) el 30/06/2003 18:55:27
Aunque no entendi muy bien tu pregunta, pero te doy como se puede desactivar cualquier evento, se hace asignandole el valor nil de la siguiente manera:
Form1.OnActivate := nil;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar una form desde otra

Publicado por E.Martínez (3 intervenciones) el 01/07/2003 13:07:09
Mas que nada, me referia a que después de cerrar el form2, que es la que contiene el componente "Progressbar", se activa el form1 y se ejecuta todo el codigo que contiene el evento OnActivate del form1. Y la pregunta era sí existe alguna manera mas elegante que la de proteger todo el codigo del evento OnActivate con un simple IF y una variable que actue de semáforo, para que se ejecute o no el código del evento.
Una solución pasaria por poner todo el código del evento OnActivate, en otro evento del formulario, el problema es que no puedo mover este código fuera de este evento.
Tu me comentas que asigne "Nil" al evento OnActivate y me parece bien. ¿Pero cuando quiera que este evento se ejecute de nuevo que valor debo asignarle?
Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar una form desde otra

Publicado por Delfino (1216 intervenciones) el 02/07/2003 15:12:39
Le asignas el nombre del procedimiento de evento, por ejemplo
From1.OnActivate := From1Activate;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar una form desde otra

Publicado por E.Martínez (3 intervenciones) el 03/07/2003 09:33:11
Muchas gracias
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar