Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Login Automatico segun usuario pre-definido (https://www.clubdelphi.com/foros/showthread.php?t=77202)

lbidi 02-01-2012 21:09:52

Login Automatico segun usuario pre-definido
 
Estimado foro..Feliz año 2012.. Tengo el siguiente problema.

En un sistema que estoy desarrollando tengo la necesidad de solicitar usuario y contraseña para acceder al sistema.

En el codigo principal de la aplicacion tengo lo siguiente
Código Delphi [-]
Application.Initialize;
Application.CreateForm(TfrmSplashScreen, frmSplashScreen);
try
    frmSplashScreen.ShowModal;
finally
    frmSplashScreen.Free;
end;

Application.MainFormOnTaskbar := True;
Application.CreateForm(TDM, DM);                  // datamodule
Application.CreateForm(Tfrm_Main, frm_Main);  // main form

if TLoginform.Execute then Application.Run;     // form de login de entrada
Si el LoginForm devuelve True entonces la aplicacion se ejecuta. Creo que lo saque de algun libro o de este foro, no recuerdo bien.

En dicho Form tengo una clase llamada execute que devuelve True o False, comprobando el usuario y la contraseña contra la base de datos.

Tengo ademas un boton en el cual se realiza esta validacion, el cual asigna el valor mrResult en True o False segun lo dicho anteriormente.

La clase es la siguente:

Código Delphi [-]

class function TLoginForm.Execute: boolean;
begin
    with TLoginForm.Create(nil) do
    try
         Result := ShowModal = mrOk;
    finally
         Free;
    end;
end;

Ademas tengo obviamente un par de edits para digitar nombre de usuario y contraseña, los cuales inicializo en el evento oncreate del form.

Mi duda es como evitar que me pida los valores de los edits ( nombre y contraseña ), y me devuelva True siempre. La necesidad es porque en uno de los pcs que van a utilizar el sistema debe "asumir" un usuario por defecto y no mostrar ninguna posible seleccion y acceder directamente a la aplicacion, porque ademas este usuario tiene un nivel minimo tambien de acceso.

Logro conectarme a la base , validad el usuario y todo, antes de seleccionar algo, pero siempre termina haciendo el create y show del formulario...

Espero haber sido claro.

Saludos y gracias por vuestra ayuda..

Leo

AzidRain 02-01-2012 21:15:49

Te recomiendo ampliamente los componentes TUserControl, son brasileños y libres, están bastante bien realizados y te ahorran horas y horas de trabajo tan solo para gestión de usuarios, me parece que tienen opción para hacer lo necesitas. Desgrraciadamente la poca documentación que hay esta en protugués pero es entendible, entre otras cosas te permite ir creando perfiles, usuarios y accesos según vaya creciendo tu desarollo. Muy buenas, es un "must have"

mamcx 02-01-2012 23:16:32

Cita:

Empezado por lbidi (Mensaje 422279)
Logro conectarme a la base , validad el usuario y todo, antes de seleccionar algo, pero siempre termina haciendo el create y show del formulario...

Pues pasa eso porque es lo que exactamente le estas indicando por codigo que debes hacer.

Ese es el problema de mezclar logica de negocios con interface de usuario... pero se resuelve extrayendo la logica de la interfaz.

Podrias hacer un api masomenos asi:

Código Delphi [-]
if LoginManager.PerformLogin() then Application.Run; 

//En loginManager
function LoginManager.PerformLogin:Boolean
begin
  if //Algo que te indique de debes hacer autologin, como el nombre del pc, una configuracion del INI etc// then
     Result:=True;
  else
    //Creas el formulario como antes...
end

ecfisa 03-01-2012 02:33:43

Cita:

En dicho Form tengo una clase llamada execute que devuelve True o False
Hola Ibidi.

Sólo a modo de aclaración, la función Execute no es una clase, es un método de clase que se aplica a la clase misma y no a una instancia de ella. Y en este caso se aprovecha para definir el método ShowModal dentro del mismo form y no depender de una función extra en otro form para ese fin.
Esto es posible por que los métodos de clase no necesitan de la existencia de una instancia para ser invocados.

Un saludo.

lbidi 03-01-2012 12:36:03

Gracias a todos por las respuestas y aclaraciones.

Se sigue aprendiendo dia a dia.

Saludos.


La franja horaria es GMT +2. Ahora son las 03:30:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi