PDA

Ver la Versión Completa : Validar Una ContraseÑa Y Cerrar La Ventana De Inicio De Sesion


TrUnkS
27-12-2005, 05:47:18
Hola a todos. He buscado tanta cosa y no he podido solucionar mi problema. Tengo una aplicación en Delphi en donde el Form principal que aparece al ejecutar la aplicación corresponde a INICIO DE SESION, en donde uno puede ingresar su nombre de usuario y contraseña. Mi preguta es como lo hago para validar el nombre de usuario y contraseña y además cerrar la ventana de inicio de sesión cuando doy en ACEPTAR en el formulario. Uso Paradox 7 y Delphi 6. Por lo general llamo a mis formularios utilizando FORM.ShowModal; en el evento onclick de los botones. Por favor ayuda :confused: urgente.

vtdeleon
27-12-2005, 13:28:45
Saludos

Se ha hablado bastante sobre el tema, has una busqueda (http://clubdelphi.com/foros/search.php?) para el caso (http://clubdelphi.com/foros/search.php?searchid=396330). Chequeate este hilo
Suerte

TrUnkS
27-12-2005, 18:08:37
Hola. Para que mi ventana de INICIO DE SESION se oculte (sin destruirla) cuando le doy en ACEPTAR, pongo este código en el evento Onclik del boton ACEPTAR o en otro evento?

Application.Initialize;
with FSesion.Create(nil) do begin //FSesion=nombre Form INICIO SESION
if ShowModal=mrok then begin
frmPantEntr:=TfrmPantEntr.Create(nil);
Application.CreateForm(TFPrincipal, FPrincipal); //FPrincipal=nombre Form que aparece después
//del logueo al pinchar en boton ACEPTAR
FreeAndNil(frmPantEntr);
Application.Run;
end else
begin
application.Terminate;
end;//If
end;//With

vtdeleon
27-12-2005, 19:58:07
Saludos
Ese codigo no esta en ningun evento, sino en el archivo DPR.
Por que no destruirlo, por que ocultarlo? lo vas a usar despues?
Si es asi, Application.Initialize;
Fsesion:=TFsesion.Create(nil);
with FSesion do begin //FSesion=nombre Form INICIO SESION
if ShowModal=mrok then begin
frmPantEntr:=TfrmPantEntr.Create(nil);
Application.CreateForm(TFPrincipal, FPrincipal);
FreeAndNil(frmPantEntr);
Application.Run;
end else
begin
application.Terminate;
end;//If
end;//WithCon esto tienes Fsesion aun en memoria, sin destruir

TrUnkS
27-12-2005, 22:13:28
Hola vtdeleon... gracias por responder, con decirte que trabajo hace solo 2 meses con delphi y estoy realizando una aplicación para mi practica. Por esta razón quizás me complique la existencia. Bueno cuando habro el archivo .dpr automaticamente me abre el archivo Sesion.pas que es el primer Form de INICIO DE SESION. Puse el código en Sesion.pas y bueno me marca error de que no esta definido el frmPantEntr, obviamente pues es un nombre de un Form, pero quiero saber a que Form esta dirigido ese nombre para reeemplazarlo, ¿será FPrincipal?, ¿estaré bien con poner el código en Sesion.pas?. Quisiera destruir FSesion depués de haber validado la contraseña. ¿ Es necesario poner algo en Ondestroy?. De antemano gracias

vtdeleon
27-12-2005, 23:22:15
Saludos

Vamos desde el principio.

FSesion ==> Form de acceso
FPrincipal ==> Form Principal

En el DPR poner esto:Application.Initialize;
Fsesion:=tFsesion.create(nil);
with Fsesion do begin
if ShowModal=mrok then begin
Application.CreateForm(TFprincipal, Fprincipal);
Application.Run;
end else begin
application.Terminate;
end;//If
end;//With
En Fsesion solo pones tu codigo de validacion (comprobacion de usuairio y clave).

TrUnkS
28-12-2005, 00:35:45
OK con el código y los nombres de los Form, pero quisiera saber en que parte lo pongo, pues cuando abro el proyecto (archivo DPR) me habre mi primer FORM (Sesion.pas) y no sé si es lo mismo ponerlo ahí o en otra parte. Puse el código en una instrucción independiente del editor de código de Sesion.pas pero no resultó :confused: . Intento buscar el editor de código del DPR pero solo me manda a Sesion.pas siempre, es porque mi primer Form es el de inico de sesión, no se si sería bueno cambiarlo. Por el momento en el evento onclick del boton Aceptar de FSesion le puse FPrincipal.ShowModal; para ir a mi segundo Form (FPrincipal), pero no se cierra FSesion y menos se destruye. Agradecido :rolleyes: y esperando en linea pues para mañana tengo que tenerlo hecho (sniff)

vtdeleon
28-12-2005, 03:53:41
Saludos

Para acceder al DPR en Delphi ve al menu Project==> View Source y el codigo que te muestra es del DPR. Alli veras el codigo de Application.Initialization y de ahi te puedes guiar.
Detente un poco y trata de entenderlo
Hasta Luego ;)

TrUnkS
28-12-2005, 05:46:07
Hola. La linea Application.CreateForm(TFprincipal, Fprincipal); ya existia en el editor de codigo del DPR asi que no la puse, la complementé con el codigo que estamos analizando, es decir, debajo de ella puse Application.Run; y elimine la linea Application.CreateForm(TFSesion, FSesion); que ya tenia, y la reeemplaze por FSesion:=TFsesion.Create(nil);.
Supongo que el codigo tiene el siguiente error:
if ShowModal=mrok ---->debe ir --->FSesion.ShowModal=mrok si no me equivoco, pero aun asi no me funciona pues no reconoce mrok. Revisalo bien pues yo ya lo he analizado y no me cabe la menor duda del error. Agradecido de antemano por tu pronta respuesta.

PD: El problema principal de esto es eliminar y destruir el primer Form llamado FSesion cuando apreto ACEPTAR en él, para que me dirija al segundo FORM llamado FPrincipal

vtdeleon
28-12-2005, 08:28:48
Saludos

Seguro qeu te sale qeu esta undeclare "mrok", pues dale a F1 teniendo el cursor sobre la palabra para que te salga la ayuda y en esta sale la unidad qeu contiene declarada esta constante.

Agrega en la parte Use (arriba) en el DPR la unidad Controls

TrUnkS
28-12-2005, 13:35:35
Lo hice. Agregue la unidad que lo contiene debajo de USE y me funciona con este codigo:

Application.Initialize;
FSesion:=TFsesion.Create(nil);
with FSesion do begin if FSesion.ShowModal=mrok then begin Application.Terminate;
end else begin
Application.Run;
end; //if
end; //with
Application.CreateForm(TFprincipal, Fprincipal);

y de ahi vienen todas las demás FORM. De todas formas este código es diferente. Con el código en que habiamos quedado no me funcionaba pero no entiendo porqué. ¿Es necesario poner en FSesion caFree para que libere la memoria? o ya es suficiente con esto?. Gracias por la ayuda