Ver Mensaje Individual
  #12  
Antiguo 15-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Reputación: 25
Caral Va por buen camino
Ya que tenemos el programa funcionando seguro no queremos que ingrese alguien sin autorización, pues vamos a hacer el login.
Primero vamos a File, New, Form.
Colocamos en el:
1- AdoQuery (ADLogin).
2- Edit
EUsuario
EClave
2- botones
BtnOk
BtnCancel
Y sus respectivos label indicativos.
Quedaria algo asi:


Lo guardamos con el nombre Flogin y el unit UFlogin.
Ahora para llamar a esta pantalla, le hacemos unos ligeros cambios al form Banco.
En el evento Onformcreate de este añadimos en la primera linea el siguiente codigo, quedaria asi:
Código Delphi [-]
procedure TBanco.FormCreate(Sender: TObject);
begin
    // Muestra la pantalla de Login
   FLogin:=TFLogin.Create(self);
   try
   FLogin.ShowModal;
   finally
   FLogin.Free;
   end;

   DTP1.DateTime:= now; // inicio la fecha al dia de hoy
   Banco.Active := True; // activo la tabla
   Banco.Last;  // le indico que lea el ultimo registro
   SumRet.Active := True; // activo el query
   SumDep.Active := True; // activo el query
   // coloco el resultado de (SumDep - SumRet) en el edit
   ESalTot.Text := FloatToStr((SumDep.Fields[0].AsFloat) - SumRet.Fields[0].AsFloat);
   // establecemos los dbedits como desactivados
   DBNTransac.Enabled := False;
   DBDescrip.Enabled := False;
   DBRetiros.Enabled := False;
   DBDeposit.Enabled := False;
   DBSalAnt.Enabled := False;
   // Deshabilitamos el combobox
   CBTipo.Enabled:= False;
   // Deshabilitamos el navegador
   DBNavigator1.Enabled := False;
   // escondemos los botones, con esto evitamos cometer errores
   BRetiros.Visible := False;
   BDeposito.Visible := False;
end;
Esto le indica al programa que busque el loguin.
Ahora en el evento OnformShow de este mismo (Banco):
Código Delphi [-]
procedure TBanco.FormShow(Sender: TObject);
begin
    If not LoginOK then Close;
end;
Esta indicacion es para que si no esta autorizado no se conecte.

Vamos al form (FLogin):
Siguiendo los mismos pasos que en los ADoquery que tenemos en el form Banco, vamos a clocar esta sentencia sql en el string de ADLogin:
Código SQL [-]
SELECT CodUsuario, Nombre, Clave  FROM Usuarios WHERE
Nombre = nom

Demosle doble clic a FLogin, en el evento OnCreate:
Código Delphi [-]
procedure TFLogin.FormCreate(Sender: TObject);
begin
   Cuenta := 0;
   Usuario := '';
   Nombre := '';
end;

Lo que sigue sera en los eventos OnClick. de los botones.
Demosle doble clic al boton Cancelar:
Código Delphi [-]
procedure TFLogin.BtnCancelClick(Sender: TObject);
begin
   LoginOK := False;
   Close;
end;

Demosle doble clic al boton OK:
Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject);
begin
   LoginOK := False;
   ADLogin.Parameters.ParamByName('nom').Value:= EUsuario.Text;
   ADLogin.Active:= True;
   EUsuario.Text:= ADLogin.Fields[1].AsString;
   If ADLogin.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       EUsuario.Text := '';
       EClave.Text := '';
       ADLogin.Active := False;
       If Cuenta = 3 then Close;
    end
   else
       If ADLoginClave.AsString = EClave.Text then
        Begin
          // Usuario := AdoQuery1CodUsuario.AsString;
           LoginOk := True;
           Nombre := ADLoginNombre.AsString;
           ADLogin.Active := False;
           Close;
        end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           EClave.Text := '';
           ADLogin.Active := False;
           If Cuenta = 3 then Close;
         end;

end;

Vamos a colocar unas variables, aqui:
Código Delphi [-]

var
  FLogin: TFLogin;
  Cuenta : integer;
  Usuario, Nombre : String;
  LoginOK : boolean;

implementation
Este no le he querido comentar mucho para que os familiaricéis con el código, asi aprendemos mejor.
Ahora abrid la tabla, colocar un usuario y clave y probad el programa.
Saludos
Responder Con Cita