⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userlogin.~pas

📁 有需要的同仁载回去慢慢研究
💻 ~PAS
字号:
unit UserLogin;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Variants,  StdCtrls, Buttons, Mask, ExtCtrls ,Registry, Db, DBTables;

type
  TFrmLogin = class(TForm)
    Image1: TImage;
    edUser: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    bbCancel: TBitBtn;
    bbOK: TBitBtn;
    edPwd: TEdit;
    db1: TDatabase;
    QryGn: TQuery;
    QryUser: TQuery;
    procedure FormCreate(Sender: TObject);
    procedure bbOKClick(Sender: TObject);
    procedure bbCancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    MyReg:TRegistry;       //系统注册表
    lastUser:String;       //上次登录的用户名
    validUser:String;      //获取的有效用户名
    valid:Boolean;         //登录成功判断
    fSuper:Boolean;        //是否系统管理员
    IsFirstTime:Boolean;
  public
    { Public declarations }
  end;

//得到用户信息的函数
function GetUser(var userName,MyPermission:String):Boolean;

implementation

uses mycommon;

{$R *.DFM}

procedure TFrmLogin.FormCreate(Sender: TObject);
begin
  //变量初始化
  lastUser:='';
  validUser:='';
  valid:=False;
  fSuper:=False;
  db1.LoginPrompt:=False;
  db1.Params.Clear;
  db1.Params.add('USER NAME='+pusername);
  db1.Params.add('PASSWORD='+ppassword);

  //访问注册表,取上次用户登录的工号
  MyReg:=TRegistry.Create;
  if MyReg.OpenKey('\Software\Gsmis\UserLog',True) then
  begin
    try
      LastUser:=MyReg.ReadString('LastUser');
    except
      LastUser:='';
    end;
    MyReg.CloseKey ;
   end;
   edUser.Text :=LastUser;  //给用户名赋值
end;

procedure TFrmLogin.bbOKClick(Sender: TObject);
var
  QryTemp:TQuery;
begin
  if IsFirstTime Then
  begin
    QryTemp:=TQuery.Create(Application);
    QryTemp.DatabaseName:='LoginDb';
    QryTemp.SQL.Add('insert into 操作用户信息 (用户工号,姓名,系统管理员,密码) Values (:pyhgh,:pxm,1,:pmm)');
    QryTemp.parambyname('pyhgh').asstring:=edUser.text;
    QryTemp.parambyname('pxm').asstring:='系统管理员';
    QryTemp.parambyname('pmm').asstring:=Encrypt(edpwd.text);
    QryTemp.ExecSQL;
    Valid:=True;
    ValidUser:=edUser.text;
    fSuper:=True;
    if (edUser.Text<>LastUser) then
      if MyReg.OpenKey('\Software\Gsmis\UserLog',True) then
      begin
        MyReg.WriteString('LastUser',edUser.Text);
        MyReg.CloseKey ;
      end;
    Close;  //关闭窗口
  end
  else
  begin
    QryUser.close;
    QryUser.parambyname('pyhgh').asstring:=edUser.text;
    QryUser.parambyname('pmm').asstring:=Encrypt(edpwd.text);
    QryUser.open;
    if not QryUser.eof then
    begin
      Application.MessageBox('登录成功!','信息',mb_ok or mb_iconInformation);
      Valid:=True;
      ValidUser:=QryUser.fieldbyname('用户工号').asstring;
      if QryUser.FieldByName('系统管理员').asboolean=True then  fSuper:=True;
      if (edUser.Text<>LastUser) then
        if MyReg.OpenKey('\Software\Gsmis\UserLog',True) then
        begin
          MyReg.WriteString('LastUser',edUser.Text);
          MyReg.CloseKey ;
        end;
        QryUser.close;
        Close;
    end;
    if not valid then
    begin
      Application.MessageBox('用户名或密码错误,'+#13+'请重新输入!','错误',mb_ok or mb_iconError);
      edUser.SetFocus;
    end;
  end;
end;

procedure TFrmLogin.bbCancelClick(Sender: TObject);
begin
  close;
end;

procedure TFrmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MyReg.Free;
  if QryUser.Active =true then
    QryUser.Close;
  if QryGn.Active =true then
    QryGn.Close;
  if db1.Connected =true then
    db1.Connected:=False;
end;

function GetUser(var userName,MyPermission:String):Boolean;
var
   QryTemp:TQuery;
   modCnt, i :word;
   FrmLogIn: TFrmLogIn;
begin
  userName:='';
  MyPermission:='';
  Result :=false;
  FrmLogin:=TFrmLogIn.Create(Application);
  with FrmLogin do
  begin
    try
      QryTemp:=TQuery.Create(Application);
      QryTemp.DatabaseName:='LoginDb';
      with QryTemp do
      begin
        SQL.Clear;
        SQL.Add('SELECT *');
        SQL.Add('FROM 操作用户信息');
        Open;
        if eof then
        begin
          IsFirstTime:=True;
          Caption:='第一次登录,设置管理员密码';
          EdUser.Enabled:=False;
          EdUser.Text:='Administrator';
        end
        else
        begin
          IsFirstTime:=False;
        end;
      end;
      ShowModal;
      if not valid then exit;
      userName:=validUser;

      QryGn.Active:=true;
      modCnt:=QryGn.Fields[0].asInteger;

      if fSuper then
      begin
        SetLength(MyPermission,modCnt);
        for i:=1 to modCnt do MyPermission[i]:='Y';
      end
      else
      begin
        QryUser.close;
        QryUser.parambyname('pyhgh').asstring:=edUser.text;
        QryUser.parambyname('pmm').asstring:=Encrypt(edpwd.text);
        QryUser.open;
        MyPermission:=QryUser.FieldByName('权限').asString;
        if Length(MyPermission)<modCnt then
        begin
          SetLength(MyPermission,modCnt);
          for i:=Length(MyPermission) to modCnt do
            MyPermission[i]:='N';
        end;
      end;
      Result :=True;
    finally
      Free;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -