Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   form login unico (https://www.clubdelphi.com/foros/showthread.php?t=83051)

jonydread 07-05-2013 05:17:48

form login unico
 
Amigos ya diran tema repetido pero ya averigue y se como hacer el formulario lo que estoy en duda si se puede realizar lo sgte.

tengo mi form de login
Código Delphi [-]
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, XPMan, DB, ZAbstractRODataset, ZAbstractDataset,
  ZDataset, ZAbstractConnection, ZConnection, StdCtrls, Buttons;

type
  TForm2 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    ZConnection1: TZConnection;
    ZQuery1: TZQuery;
    XPManifest1: TXPManifest;
    procedure FormCreate(Sender: TObject);
    function UsuarioValido(const aName, aPassword: string): Boolean;
    procedure BitBtn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1,Unit3;

{$R *.dfm}

function TForm2.UsuarioValido(const aName, aPassword: string): Boolean;
begin
  with  zquery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Text :='SELECT * FROM ingreso WHERE usuario = :usuario AND pass = :pass';
    ParamByName('usuario').AsString := aName;
    ParamByName('pass').AsString := aPassword;
    Open;
    Result:= not IsEmpty;
    Close;
  end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
edit1.PasswordChar := '*';
  with zQuery1 do
  begin
SQL.Text := 'SELECT * FROM ingreso';
Open;
while not Eof do
    begin
      ComboBox1.Items.Add(zQuery1.FieldByName('usuario').AsString);
      combobox1.ItemIndex := 0;
      Next
    end;
    Close
  end;
end;

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
if not UsuarioValido(ComboBox1.Text,Edit1.Text) then
  begin
     MessageDlg('Usuario no existe', mtError, [mbcancel],0);

end;
end;
end.

este para un form principal funcionaria exelente colocando
Código Delphi [-]
if not UsuarioValido(ComboBox1.Text,Edit1.Text) then
  begin
     MessageDlg('Usuario no existe', mtError, [mbcancel],0)
end else
   Application.CreateForm(TForm3, Form3);
   // Establece Form3 con FormMain
   SetAsMainForm(form3);
   // Muestra Form3
   form3.show;
   // Cierra Form2
   form2.Close;
pero quiero utilizar el mismo para ingresar a otro form sin hacer otro formulario de inicio y que solo el administrador tenga acceso.
me explico al iniciar todos los usuarios creados podran iniciar con nombre y pass, pero tengo una seccion de administrador de usuarios a la cual solo debiese acceder admin habra alguna forma de usar el mismo formulario o debo crear otro?(que no es lo que quiero).


saludos!!

newtron 07-05-2013 10:03:44

Hola.

No entiendo exactamente lo que quieres conseguir pero si usas un formulario de control de acceso a usuarios imagino que será para después en el resto del programa poder acceder a unos sitios u otros según el permiso de usuario que tengas y cada uno de esos sitios será un formulario, ¿no?.

Neftali [Germán.Estévez] 07-05-2013 10:42:55

Cita:

Empezado por jonydread (Mensaje 459903)
Me explico, al iniciar todos los usuarios creados podran iniciar con nombre y pass, pero tengo una seccion de administrador de usuarios a la cual solo debiese acceder admin habra alguna forma de usar el mismo formulario o debo crear otro?(que no es lo que quiero).

Lo primero, es que deberás detectar y almacenar si el usuario que accede es "normal" o "Admin".
Teniendo esa información puedes hacer lo que necesitas de muchas maneras sin tener que duplicar el form.

Puedes abrir 1 formulario o 2 dependiendo del tipo de usuario, puedes colocar un acceso desde el form abierto que sólo esté visible o accesible para "Admins",...

jonydread 08-05-2013 05:27:07

probare algo gracias

jonydread 08-05-2013 05:52:46

hise lo sgte.
en login cree un archivo que guarda el usuario que inicia
Código Delphi [-]
procedure TLoginform.BitBtn1Click(Sender: TObject);
var
temp:TStringList;
path: string;
begin
path := ExtractFilePath(Application.ExeName);
if not UsuarioValido(ComboBox1.Text,Edit1.Text) then
  begin
     MessageDlg('Usuario no existe', mtError, [mbcancel],0);
end else

temp := TStringList.Create;
temp.Add(ComboBox1.Text);
temp.Add(Edit1.Text);
temp.SaveToFile(path+'\user.tmp');
 ModalResult := mrOK;
end;
end.
el nombre lo cargue en un label e ise lo sgte. en el boton del menu agregar
Código Delphi [-]
procedure TMainform.AgregarClick(Sender: TObject);
begin
   if label2.Caption = 'Admin' then
   begin
   Application.CreateForm(Tadminform, Adminform);

   SetAsMainForm(Adminform);

   Adminform.show;

   mainform.Close;
   end else
   showmessage('no tiene permisos')
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 04:15:00.

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