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

📄 unitloginform.pas

📁 是分布式粮库程序,是采用Delphi实现的
💻 PAS
字号:
unit UnitLoginForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Db, DBTables, Buttons,MainForm,Menus,IniFiles; //ghm

type
  TLoginForm = class(TForm)
    Image9: TImage;
    LbUserName: TLabel;
    EditUserID: TEdit;
    EditPassword: TEdit;
    LbPassword: TLabel;
    Query1: TQuery;
    Timer1: TTimer;
    LbTimer: TLabel;
    bbtnOK: TBitBtn;
    bbtnClose: TBitBtn;
    Query2: TQuery;
    procedure BtnCancelClick(Sender: TObject);
    procedure BtnExitClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure EditUserIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditPasswordKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure bbtnCloseClick(Sender: TObject);
    procedure bbtnOKClick(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
  end;
var
  LoginForm: TLoginForm;
  TimerLeft : integer =60;
  LoginCount : integer =3;
implementation

uses Global,UnitDataModul;

{$R *.DFM}
           
{procedure TLoginForm.BtnOKClick(Sender: TObject);
var
  s: string;
begin
  if LoginCount <= 0 then Application.Terminate;
  if trim(EditUserID.text) = '' then
    begin
      EditUserID.setfocus;
      showmessage('请输入用户名!');
      exit;
    end;
  Global.g_user.UserID:=EditUserID.Text;
  Global.g_user.PassWord:=EditPassWord.Text;
  with Query1 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from ENT_USER where UserID='''+trim(Global.g_user.UserID)+''''+' and PassWord='''+trim(Global.g_user.PassWord)+'''' );
      s:=sql.Text;
      Prepare;
      open;
      if RecordCount=0 then
        begin
          close;
          dec(LoginCount);
          showmessage('非法用户,请核对后重新输入!');
          EditUserID.Text:='';
          EditPassWord.Text:='';
          EditUserID.SetFocus;
          exit;
        end
      else
        Global.g_user.UserName:=FieldByName('NAME').AsString;
        Global.g_user.UnitID:=FieldByName('UNIT_ID').AsInteger;
        Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Add('select * from ENT_UNIT_INFO where UNIT_ID=:UNIT_ID');
        Query1.Params[0].AsInteger := Global.g_user.UnitID;
        Query1.ExecSQL;
        Global.g_user.UnitName:=Query1.FieldByName('UNIT_NAME').AsString;
      end;
   ModalResult := mrOK;

end;  }

procedure TLoginForm.BtnCancelClick(Sender: TObject);
begin
  EditUserID.Text:='';
  EditPassWord.Text:='';
end;

procedure TLoginForm.BtnExitClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TLoginForm.Timer1Timer(Sender: TObject);
begin
  dec(TimerLeft);
  case TimerLeft of
    1..10 :begin
      LbTimer.Font.Color := clYellow;
      beep;
      end;
    0 : begin
      ModalResult := mrCancel;
      //Application.Terminate;
      end;
  end;
  LbTimer.Caption := IntToStr(TimerLeft);
end;

procedure TLoginForm.EditUserIDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if key = VK_RETURN then
    EditPassword.SetFocus;
end;

procedure TLoginForm.EditPasswordKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_RETURN then BbtnOk.Click;
end;

procedure TLoginForm.FormCreate(Sender: TObject);
begin
  Query1.DatabaseName:=DtMdl.Database1.DatabaseName;
end;

procedure TLoginForm.FormShow(Sender: TObject);
begin
  EditUserID.SetFocus;
end;

procedure TLoginForm.bbtnCloseClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TLoginForm.bbtnOKClick(Sender: TObject);
var
  s: string;
  i,j,k:integer;//ghm add
  len:integer;//ghm
  permit:string;//ghm add0401
  MenuItem:TMenuItem;//ghm
  bfound:boolean;//ghm
  myinifile:TInifile;
  filename: string;
  s1,s2:string;
begin
  { filename:=ExtractFilePath(paramstr(0))+'ywgl.ini';
   myinifile:=TInifile.Create(filename);
   s1:=myinifile.ReadString('unit','unitid','');
   if s1<>'' then g_user.UnitID:=strtoint(s1);
   g_user.UnitName:=myinifile.ReadString('unit','unitname','');  }


  if LoginCount <= 0 then Application.Terminate;
  if trim(EditUserID.text) = '' then
    begin
      EditUserID.setfocus;
      showmessage('请输入用户名!');
      exit;
    end;
  Global.g_user.UserID:=EditUserID.Text;
  //IF trim(EditPassWord.Text)= '' then
     //Global.g_user.PassWord:=
  Global.g_user.PassWord:=EditPassWord.Text;
  with Query1 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from ENT_USER where USER_ID='''+trim(Global.g_user.UserID)+''''+' and PassWord='''+trim(Global.g_user.PassWord)+'''' );
      s:=sql.Text;
      Prepare;
      open;
      if RecordCount=0 then
        begin
          close;
          dec(LoginCount);
          showmessage('非法用户,请核对后重新输入!');
          EditUserID.Text:='';
          EditPassWord.Text:='';
          EditUserID.SetFocus;
          exit;
        end
      else
        begin
        Global.g_user.UserName:=FieldByName('NAME').AsString;
        Global.g_user.UnitID:=FieldByName('UNIT_ID').AsInteger;
        Global.g_user.USER_CODE:=FieldByName('USER_CODE').AsInteger;
///////////////////////////////////////////////////////////////////////ghm
//超级用户

        Query2.Close;
        Query2.SQL.Clear;
        Query2.SQL.Add('select PERMCODE from ENT_SYS_USERRIGHTS where USER_CODE='+inttostr(Global.g_user.USER_CODE)+'');
        Query2.Open;
        if Query2.RecordCount>0 then
        Query2.First;
        while not Query2.Eof do
        begin
          permit:=Query2.FieldByName('PERMCODE').AsString;
{
          len:=length(permit);
          case len of
          1..2:           // //一级目录
          begin
            i:= strtoint(copy(permit,1,2);
            FrmMain.MainMenu1.Items[i].Enabled:=true;      //使对应的菜单项变为可操作
          end;
          3..4:           //二级目录
          begin
            i:= strtoint(copy(permit,1,2);
            j:= strtoint(copy(permit,3,2);
            FrmMain.MainMenu1.Items[i].Enabled:=true;      //使对应的菜单项变为可操作
            FrmMain.MainMenu1.Items[i].Items[j].Enabled:=true;  //使对应的菜单项变为可操作
          end;
          5..6:             //三级目录
          begin
            i:= strtoint(copy(permit,1,2);
            j:= strtoint(copy(permit,3,2);
            k:= strtoint(copy(permit,5,2);
            FrmMain.MainMenu1.Items[i].Enabled:=true;      //使对应的菜单项变为可操作
            FrmMain.MainMenu1.Items[i].Items[j].Enabled:=true;  //使对应的菜单项变为可操作
            FrmMain.MainMenu1.Items[i].Items[j].Items[k].Enabled:=true;  //使对应的菜单项变为可操作
          end;
          else
          end;
}
          bfound:=false;

           for i:=0 to FrmMain.MainMenu1.Items.Count-1 do
           begin
//               if bfound then
//                  break;
               if strtoint(permit)= FrmMain.MainMenu1.Items[i].Tag then  //一级目录
               begin
                  FrmMain.MainMenu1.Items[i].Enabled:=true;        //使对应的菜单项变为可操作
                  bfound:=true;
                  break;
               end;
               if  FrmMain.MainMenu1.Items[i].Count>0 then        //二级目录
               begin
                   for j:=0 to FrmMain.MainMenu1.Items[i].Count-1 do
                   begin
                     if strtoint(permit)= FrmMain.MainMenu1.Items[i].Items[j].Tag then  //二级目录
                     begin
                          FrmMain.MainMenu1.Items[i].Items[j].Enabled:=true;  //使对应的菜单项变为可操作
                          break;
                     end;
                     if FrmMain.MainMenu1.Items[i].Items[j].Count>0 then       //三级目录
                     begin
                        for k:=0 to  FrmMain.MainMenu1.Items[i].Items[j].Count-1 do
                        begin
                          if strtoint(permit)= FrmMain.MainMenu1.Items[i].Items[j].Items[k].Tag then  //三级目录
                          begin
                              FrmMain.MainMenu1.Items[i].Items[j].Items[k].Enabled:=true;  //使对应的菜单项变为可操作
                              break;
                          end;
                        end;
                     end;
                   end;
               end;
           end;
          Query2.Next;
        end;
//////////////////////////////////////////////////////////////////////// ghm
        Query2.Close;
        Query2.SQL.Clear;
        Query2.SQL.Add('select * from ENT_UNIT_INFO where UNIT_ID=:UNIT_ID');
        Query2.Params[0].AsInteger := Global.g_user.UnitID;
        Query2.Open;
        Global.g_user.UnitName:=Query2.FieldByName('UNIT_NAME').AsString; 
        end;
      end;
   ModalResult := mrOK;

end;


end.

⌨️ 快捷键说明

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