en mi aplicacion tengo vairios form al abrir un nuevo form necesito q el form en el que estaba se cierre pero sin que se cierre toda la aplicacion. ¿alguien me puede decir como?
Actualizar:he usado el metodo close pero por ejemplo si tengo form1 y form2.
Form1 abre a form 2.
luego al cerrar form2 necesito que se cierre solo form 2 y que regrese a form1. si uso el metodo "close" en form 2 lo que hace es cerrarme por completo la aplicacion.y lo unico que quiero es que regrese al mismo form inicial form1. grax
Copyright © 2024 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
Hola Style,
El método que estás buscando es Close.
Simplemente llama a dicho método en donde lo necesites por ejemplo, en el evento OnClick de un botón:
procedure Tform1.Button1Click(Sender: TObject);
begin
form2.Close;
end;
Espero haberte sido de ayuda.
Por si necesitas mayor asesoramiento, recomiendo que te registres en alguno de éstos foros:
http://www.clubdelphi.com/
http://www.delphiaccess.com/
EDITO:
Al Form2.Close; debería sólo cerrar a dicho form. A menos que sea Form2 el Main Form, si se cierra toda la aplicación. Ve a Proyect -> Options ->Forms y establece el form principal adecuado.
Yo hice el supuesto de que form1 es el principal y form2 es otro.
Close, lo único que hace es "ocultar" en realidad, más no libera la memoria que este form ocupa. Close Invoca a otro método, Hide, y éste es equivalente a hacer setear en False la propiedad visible. Pero Close no es lo único que hace, lleva a cabo una serie de controles, dependiendo de si se trata de un form modal o no, si es un form MDI o SDI, si es el form principal, etc.
En pocas, en forma breve, se puede conseguir el "mismo efecto" empleando:
form2.Close;
form2.Hide;
form2.visible := false;
Pero en realidad Close, y Hide tienen diferentes usos y comportamiento. Por empezar, cuando se invoca a Close, se disparan unos eventos, entre ellos el OnClose.
Por ejemplo, en el evento OnClose del form2 haz esto:
procedure Tform2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Me cierran');
end;
Ahora, usa el método Close en algún botón del form1 para cerrar al form 2. Algo así:
procedure Tform1.Button2Click(Sender: TObject);
begin
form2.Close;
end;
Ejecuta la aplicación. En cuanto se cierre el form2 te aparecerá un mensaje con la frase "Me cierran".
Ahora, reemplaza form2.Close por Form2.Hide. Deja el resto como está.
Si ejecutas la aplicación, al ocultar el form2 no se muestra el mensaje.
Como vez, Close y Hide tienen diferentes usos. Hide es en realidad quien oculta al form. Pero es Close quien lleva los controles adecuados y dispara los eventos necesarios (si se los usa).
Sugiero que leas la ayuda para informarte mejor sobre el manejo de esto.
Espero que estos nuevos detalles te sirvan para comprender mejor el tema.
Saludos,