PDA

Ver la Versión Completa : ¿Cómo cerra un form sin cerrar los demás?


Master23
01-06-2010, 06:04:42
Lo que pasa es que en la aplicación tengo un Login de usuario , cuando el usuario entra al programa los datos correctos ,estos deben cerrar el login y abrir el form2 que es el que ya contiene la aplicación. El problema está , en que cuando cierro el login form1 se cierran todos, entonces intenté hacer un hide al form1 y todo bien desaparece el 1 y queda el 2 abierto pero cuando minimizo el 2
desaparece y no sé que puedo hacer . espero sus respuestas gracias de ante mano.

MAXIUM
01-06-2010, 06:29:25
En principio, Form2.Visible:= False;

Cuando el logeo es correcto, ejecutar el siguiente código
Form2.Visible:= True;
Form2.Update;
Form1.Visible:= False;

Y cuando cierres en Form2, en el procedimiento de Cerrar, debe colocar Form1.Close;

Neftali [Germán.Estévez]
01-06-2010, 10:54:41
Supongo que tu form de Login debe estar como principal.
Otra opción es colocar el Form2 como principal y desde ese mostrar el de login. En ese caso puedes cerrar el de Login sin que se cierre la aplicación.

bosster_018
01-06-2010, 23:58:38
Tu solución, aunque no muy eficáz, puede ser la de poner tu formulario de "Registrar" como secundario o después de los otros formularios que tengas.

Todos tus formularios (excepto el de Registrar) deben estar invisibles y al momento de aceptar el registro, recien se visualiza, al mismo tiempo que el formulario de registro se hace invisible.
Aquí un ejemplo que hice ahorita:

Pd: No soy muy bueno con esto :p:

Ventana de verificacion de registro (http://www.clubdelphi.com/foros/attachment.php?attachmentid=1711&stc=1&d=1275425365)

Contraseña = obvio es "gg" :P

Pero también he leído muchas veces que este método, no es el más eficáz ni el más seguro :confused:...
No entendí muy bien, pero la mejor forma de hacerlo es desde el proyecto. Iniciando el formulario 2 (sin crear los otra formularios), para luego llamar a la creación de los otros formularios.

Como te mencionó Neftali:

Supongo que tu form de Login debe estar como principal.
Otra opción es colocar el Form2 como principal y desde ese mostrar el de login. En ese caso puedes cerrar el de Login sin que se cierre la aplicación.Si pueden aclarenme esto... Por favor ;)

OscarBravo
02-06-2010, 01:46:11
Hola.
Tengo una aplicación que llama un formulario de login, que es parecido a lo que tu quieres. Lo que hago es llamar al formulario de login en el evento Show del formulario principal asi: (Claro que mi aplicación es MDI)

procedure TFrmMain.FormShow(Sender: TObject);
begin
If FrmPassword.ShowModal = MrOk Then Begin
.
.//aqui colocas el código que valida si el susario digitado existe...
.Else //Es porque el usuario no existe, entonces sacas los mensajes necesarios,

//
Donde FrmMain es el formulario principal y FrmPassword es el formulario de login
Espero haberte ayudado...

Master23
02-06-2010, 16:39:33
Hola.
Tengo una aplicación que llama un formulario de login, que es parecido a lo que tu quieres. Lo que hago es llamar al formulario de login en el evento Show del formulario principal asi: (Claro que mi aplicación es MDI)

procedure TFrmMain.FormShow(Sender: TObject);
begin
If FrmPassword.ShowModal = MrOk Then Begin
.
.//aqui colocas el código que valida si el susario digitado existe...
.Else //Es porque el usuario no existe, entonces sacas los mensajes necesarios,

//
Donde FrmMain es el formulario principal y FrmPassword es el formulario de login
Espero haberte ayudado...


Creo que con eso ya me llego la idea de como hacer el trabajo muchas gracias.

naty_prog
07-11-2012, 05:26:57
hola programadores :), recurro a uds porque tengo un problema con mi sistema.les cuento...tengo un form (form_correlativas),el cual muestra información de varias tablas, dicha información esta sujeta a modificarse por medio de los bitbtn que posee el mismo.mas o menos para darles una idea,la información que maneja son materias a las que debo agregarles correlativas.los bitbtn que uso son: uno para añadir, otro para vista previa y otro para eliminar correlatividades a esas materias;cuando realizo un alta,el sistema me abre otro form (form_nueva_correlativa) para ejecutar un ingreso, el cual posee otro bitbtn (GUARDAR) para guardar el nuevo registro. el problema surge recien despues de añadir o eliminar una correlativa, el formulario que estaba anteriormente (form_correlativas), se cierra,siendo que no debe hacerlo,y no encontramos el error. el codigo del bitbtn (GUARDAR) del form_ que tengo para agregar por si el problema esta alli es el siguiente:

procedure TForm_nueva_correlativa.BitBtn_guardar_new_correlativaClick(
Sender: TObject);
begin

//
dm.IBDataSet_CorrelativasTIPO.Value:=ComboBox_nueva_correlativa_tipo.Text;
dm.IBDataSet_CorrelativasESTADO_CORRELATIVIDAD.Value:=combobox_nueva_correlativa_condicion.Text;
dm.IBDataSet_CorrelativasCORRELATIVA.Value:=DBLookupComboBox_mat_correlativa.Text;
dm.IBDataSet_CorrelativasID_MATERIA.Value:=materia_actual;
dm.IBDataSet_CorrelativasID_MATCORRELATIVA.Value:=DBLookupComboBox_mat_correlativa.KeyValue;
dm.IBDataSet_Correlativas.Post;
dm.IBTransaction_Sistema.CommitRetaining;
dm.IBDataSet_Correlativas.close;
dm.IBDataSet_Correlativas.Open;
dm.IBQuery_Correlativas_regular_rendir.Close;
dm.IBQuery_Correlativas_regular_rendir.Open;
dm.IBQuery_Correlativas_Regular_cursar.Close;
dm.IBQuery_Correlativas_Regular_cursar.Open;
dm.IBQuery_Correlativas_Aprobada_rendir.Close;
dm.IBQuery_Correlativas_Aprobada_rendir.Open;
dm.IBQuery_Correlativas_Aprobada_Cursar.Close;
dm.IBQuery_Correlativas_Aprobada_Cursar.Open;

Form_nueva_correlativa.Close;
Form_correlativas.Show;


end;

Insisto,no se si el problema vendra de alli,o sera en otra parte del codigo.desde ya les agradezco su ayuda.¡¡¡¡muchas gracias !!!!!!

ecfisa
07-11-2012, 11:03:20
Hola naty_prog.

Selecciona el TBitBtn (el del nombre difícil :)) y desde el Object inspector, a la propiedad ModalResult del mismo, asignale la constante mrNone.

Saludos.

naty_prog
07-11-2012, 12:23:20
hola ecfisa,te comento que el problema esta resuelto :o.muchas gracias por la ayuda.hasta la proxima.saludos^\||/