Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Como ocultar ventana LogIn

Hola amigos del Club, tengo una consulta que les parecerá tonta pero soy novato.

Realice un programa con un login, este login cuando es correcto ejecuta la funcion ShowModal() de un segundo Form. El problema es que atrás queda siempre la ventanita del Login; no desaparece obviamente.

Trate de utilizar la funcion Hide(), pero si la utilizo oculta todo incluyendo el segundo Form. Como puedo ocultar el form del login?

Gracias de antemano, un abrazo.
Responder Con Cita
  #2  
Antiguo 14-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Diego.

No sé como tenés organizada la creación y aperturas de Forms, pero normalmente un formulario de autentificación debe mostrarse de forma modal, es decir con ShowModal. Ya que la idea es que el usuario se identifique correctamente para ingresar, de otro modo no debería poder acceder a la aplicación.

Entonces sintetizando y de acuerdo al resultado de la verificación de nombre y contraseña, pueden pasar dos cosas:
1. Ingresa los datos correctamente y entra a la aplicación.
2. Ingresa erroneamente los datos y termina la aplicacion.
En ambos casos el formulario login debe cerrarse, es decir que una vez verificados los datos, deberías usar el método Close en lugar de Hide.

El por qué se oculta todo, como te dije al principio, depende de como estés haciendo la creación y aperturas de forms. Sería de gran ayuda que nos pusieras simplificadamente el código con que lo estas realizando.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 15-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Te comento

Te comento amigo: realice un programa que tiene una ventana de log-in como principal, tiene dos textbox (uno con mascara para los "*"), se pincha el boton de ingresar si el usuario y contraseña estan bien muestra una ventana de forma modal (ShowModal()), pero queda atras la otra ventanita.

Ya intente esto:

en el evento OnShow de la ventana 2 que oculte el form_login con -Hide()- pero oculta todo pues la ventana principal del programa es el Form_login.
en el evento OnCreate de la ventana 2 que oculte el form_login con -Hide()- pero da error puesto que no coloco la ventana 2 como disponible sino como autocreate en Project->Options->Forms.
Si utilizo close() me cierra toda la aplicacion

Que puedo hacer?

(

Gracias por responder ecfisa
Responder Con Cita
  #4  
Antiguo 15-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Diego.

En principio yo no haría que el form de autentificación fuera el principal, Sí lo llamaría desde el evento OnShow del form principal y verificaría la condición de salida para decidir si termina la aplicación o continua.

Más o menos de este modo:
Código:
void __fastcall TfrMain::FormShow(TObject *Sender)
{
 frLogin = new TfrLogin(this);
 int ExitResult = frLogin->ShowModal();
 delete frLogin;
 if (ExitResult == mrCancel)  
   Application->Terminate();
}
Previamente hay que quitar frLogin de Proyect->Options->Forms->Auto-create forms.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 15-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Gracias por responder en cuanto lo pruebe posteo.

Un abrazo.
Responder Con Cita
  #6  
Antiguo 15-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Algo parecido a la solución de ecfisa es lo que hago yo, pero no en el evento OnShow, pues puede darse mas veces si ocultamos y mostramos el Form.

Yo lo hago en el WinMain:

Código:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
       Application->Initialize();

       TLogin *Log = new TLogin(0);
       if(Log->ShowModal() == mrOk)
          Application->CreateForm(__classid(TForm1), &Form1);
       delete Log;
       Application->Run();
   }
   catch (Exception &exception)
   {
       Application->ShowException(&exception);
   }
   return 0;
}
Una solución a la propuesta de hacerlo en el OnShow es colo car una bandera estática:
Código:
void __fastcall TfrMain::FormShow(TObject *Sender)
{
   static bool Primera_vez = true;
   if(Primera_vez){
      frLogin = new TfrLogin(this);
      int ExitResult = frLogin->ShowModal();
      delete frLogin;
      if (ExitResult == mrCancel)  
        Application->Terminate();
      Primera_vez = false;  
   }
}
Aún así, prefiero la primera técnica pues de esa manera nunca se crea el formulario principal.

Saludos.
Responder Con Cita
  #7  
Antiguo 17-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Talking Excelente! Gracias a los dos!

Cita:
Empezado por ecfisa Ver Mensaje
Hola Diego.

En principio yo no haría que el form de autentificación fuera el principal, Sí lo llamaría desde el evento OnShow del form principal y verificaría la condición de salida para decidir si termina la aplicación o continua.

Más o menos de este modo:
Código:
void __fastcall TfrMain::FormShow(TObject *Sender)
{
 frLogin = new TfrLogin(this);
 int ExitResult = frLogin->ShowModal();
 delete frLogin;
 if (ExitResult == mrCancel)  
   Application->Terminate();
}
Previamente hay que quitar frLogin de Proyect->Options->Forms->Auto-create forms.


Un saludo.
Señores, gracias por su tiempo. Les comento: Desconocia el comportamiento real de la funcion ShowModal(); resulta que ahora si es principal la form2 y el login lo deje asi:

Form2 On Show{
form_login->ShowModal();
}

y si era correcto el ingreso, en el form_login se realizaba la operacion:

form_login->close();

y listo.

Gracias por su tiempo amigos!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ventana de Login al correr un programa Yasnet MySQL 12 16-11-2008 20:30:00
mostrar y ocultar una ventana Tonio Varios 4 22-10-2008 15:49:51
Consulta sobre ventana login y menus Choclito OOP 6 02-09-2008 23:30:23
como crear una ventana de login wadhis Conexión con bases de datos 1 27-08-2008 09:47:26
Ayuda Con Ventana Para Login!!! jugomez MS SQL Server 5 23-10-2006 17:22:29


La franja horaria es GMT +2. Ahora son las 00:43:36.


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
Copyright 1996-2007 Club Delphi