Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Validar Una ContraseÑa Y Cerrar La Ventana De Inicio De Sesion (https://www.clubdelphi.com/foros/showthread.php?t=28635)

TrUnkS 27-12-2005 05:47:18

Validar Una ContraseÑa Y Cerrar La Ventana De Inicio De Sesion
 
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 para el caso. 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?
Código Delphi [-]
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,
Código Delphi [-]
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;//With
Con 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:
Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 19:18:30.

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