FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Formularios: gestión MainForm+LoginForm+SplashForm
Saludos a los lectores del foro.
A continuación, paso a plantearos un problema que me ha surgido, por si me pudiérais echar un capote aportando sugerencias. Tengo tres formularios:
Explico un poco. La unidad TConfig alberga el mecanismo que me he creado para trabajar con mi fichero INI (en resumen, una serie de registros y una clase Config). En el bloque begin-end del fichero del proyecto lo que hago es instanciar un objeto Config en el que hago una lectura global del fichero INI (metodo Load; que inicializa los datos miembro de la clase con las claves extraidas de cada sección/campo del fichero INI) y luego compruebo si hay que abrir o no el formulario de "inicio de sesion" (con el método getUserSession). Por ahí se puede ver también que se utiliza otro método parecido: getSplash (análogo a getUserSession solo que para el formulario de bienvenida). Compruebo Application.Terminated (True o False) porque en caso de cargar el Inicio de sesión y de que el usuario no haya pasado la prueba de autenticación (es decir, introducir un usuario/contraseña correcto durante X intentos), en el propio formulario de inicio de sesión (frmLogin) invoco al método Terminate de Application. Por si quedara más claro, aquí adjunto el código (temporal) del evento Click del botón "Aceptar" de frmMain utilizado para validar los datos introducidos por el usuario:
Como he dicho, es un código de prueba temporal. He llamado a Application.Terminate desde allí porque de algún modo tengo que "cortar de ráiz" la ejecución en el momento que el usuario haya demostrado que no ha sabido introducir un usuario/contraseña válido. Bueno, y este rollete no es más para ver si existe un modo más elegante (seguro) para lograr un inicio de aplicación como el propuesto (con MainForm+[LoginForm+SplashForm]). Gracias por la ayuda que me puedan brindar Última edición por ebarbeito fecha: 06-02-2006 a las 23:04:50. |
#2
|
||||
|
||||
Saludos
Esta un poco liado ese asunto de condicionar cada ventana segun un valor. Por lo regular utilizo el codigo de este post para mostrar un Splash-Login-Principal. De ahi en adelante solo debes condicionarlo. Pd:Confieso que no llegue a leer todo tu mensaje.
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#3
|
||||
|
||||
vtdeleon, gracias por tu respuesta :-) Aunque al final he modificado un poco la solución que pegué en mi primer mensaje.
Me he creado una variable (booleana) "allowed" dentro de la unidad flogin (unidad que alberga el formulario de inicio de sesión, frmLogin) que por defecto se encuentra a True. Con ella controlo en el fichero del proyecto el acceso, o no, al formulario principal. allowed cambiará a False en el comportamiento de frmLogin, cuando no se haya obtenido acceso legal a través del mismo (usr/pwd válidos). De este modo no tengo que llamar a Application.Terminate desde ninguna parte ni tampoco comprobar Application.Terminated (como puse en mi anterior mensaje) Pego el fragmento de código del cuerpo modificado. Y, por supuesto, sigo abierto a sugerencias. vtdeleon el código al que me has referenciado no me valía para cómo quería que se comportara el inicio de la aplicación. En caso de tener que lanzar el formulario frmLogin, solo me interesa crear la ventana de bienvenida (frmSplash) y el principal (frmMain) si se validan satisfactoriamente los datos de autenticación. En otro caso, no hace falta reservar memoria para más objetos pues la aplicación deberá entonces terminar. Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|