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

📄 unitlogin.~pas

📁 delphi基于工业控制的串口通讯
💻 ~PAS
字号:
unit UnitLogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ExtCtrls, XPMenu,IniFiles;

type
  Tfrm_Login = class(TForm)
    Cmd_Login: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Label1: TLabel;
    Label3: TLabel;
    Edit_Login_Type: TComboBox;
    Edit_Login_Name: TComboBox;
    Panel1: TPanel;
    CheckBox1: TCheckBox;
    XPMenu1: TXPMenu;
    Lab_Error: TLabel;
    Edit_Login_Pwd: TLabeledEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Cmd_LoginClick(Sender: TObject);
  private
    { Private declarations }
    PassTime:Byte;
    tempPwd:string;
  public
    { Public declarations }
  end;

var
  frm_Login: Tfrm_Login;
  f: TIniFile;
implementation

uses UnitMain, UnitDataModule, UnitPublic, UnitkeyCryptClass;

{$R *.dfm}

procedure Tfrm_Login.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Action:=Cafree;
    frm_DataModule.ADO_QueryLogin.Close;
end;

procedure Tfrm_Login.SpeedButton2Click(Sender: TObject);
begin
    frm_Login.Tag:=0;
    Close;
end;

procedure Tfrm_Login.FormShow(Sender: TObject);
begin
    Edit_Login_Type.ItemIndex:=0;
    Edit_Login_Name.Items.Add('system');
    with frm_DataModule.ADO_QueryLogin do
    begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT Distinct Login_Type FROM [Chang]');
        Try
            Prepared;
            Open;
            While Not Eof do
            begin
                Edit_Login_Type.Items.Add(FieldByName('Login_Type').AsString);
                Next;
            end;
        Except
            Application.MessageBox('系统错误!系统在打开数据表【Login】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
            Exit;
        End;
    end;
end;

procedure Tfrm_Login.Cmd_LoginClick(Sender: TObject);
begin
    inc(PassTime);
    //
    //**************************************************************************
    //运用开发用户的密码
    if CheckBox1.Checked=True then
    begin
        if ((Trim(Edit_Login_Name.Text)='system') and (Trim(Edit_Login_Pwd.Text)='system')) then
        begin
            f:=TIniFile.Create(ExtractFileDir(application.Exename)+'\SystemSet.ini');
            f.WriteString('LoginSet','Login_Type','开发类型');
            f.WriteString('LoginSet','Login_Name','开发人员');
            f.WriteString('LoginSet','Login_Time',DateTimeToStr(now));
            f.Free;
            RightStr:='';
            LoginName:='开发人员';//记录登陆人员的名称
            LoginType:=Trim(Edit_Login_Name.Text);     //记录登陆人员的类型
            LoginTime:=(now);                    //记录登陆人员的登陆时间
            frm_main:=Tfrm_Main.Create(self);
            frm_Main.StatusBar1.Panels[0].Text:='当前操作员为:'+trim(LoginName);
            frm_Main.ShowModal;
            frm_Login.close;
            frm_main.Free;
        end
        else
        begin
            Lab_Error.Caption:=Format('密码错误第%d次,请重新输入:',[PassTime]);
            if PassTime>=3 then
            begin
                MessageBox(Handle,'连续输入错误密码超过3次,程序退出!','信息',MB_OK);
                system.Halt(0);
            end
            else
            begin
                application.MessageBox('[连续输入错误密码超过3次,程序退出]!'+#13#10#13+'用户名和密码不符合!请确认后再输入!',Pchar(Application.Title),mb_Iconwarning);
                Edit_Login_Pwd.Text:='';
                Edit_Login_Pwd.SetFocus;
            end;
            Edit_Login_Pwd.SetFocus;
            Edit_Login_Pwd.SelectAll;
            exit;
        end;
    end
    //**************************************************************************
    //
    //--------------------------------------------------------------------------
    //不运用开发用户密码
    else
    begin
        tempPwd:=Decrypt(trim(Edit_Login_Pwd.Text),'luersoft');  //解开密码
        with frm_DataModule.ADO_QueryLogin do
        begin
            Close;
            Sql.Clear;
            Sql.Add('Select Login_Type,Login_Name,Login_Pwd from [Chang] where Login_Type=:u0 and Login_Name=:u1 and Login_Pwd=:u2');
            Parameters[0].Value:=Trim(Edit_Login_Type.Text);
            Parameters[1].Value:=Trim(Edit_Login_Name.Text);
            Parameters[2].Value:=Trim(tempPwd);
            open;
            if RecordCount=0 then
            begin
                Lab_Error.Caption:=Format('密码错误第%d次,请重新输入:',[PassTime]);
                if PassTime>=3 then
                begin
                    MessageBox(Handle,'连续输入错误密码超过3次,程序退出!','信息',MB_OK);
                    system.Halt(0);
                end
                else
                begin
                    application.MessageBox('[连续输入错误密码超过3次,程序退出]!'+#13#10#13+'用户名和密码不符合!请确认后再输入!',Pchar(Application.Title),mb_Iconwarning);
                    Edit_Login_Pwd.Text:='';
                    Edit_Login_Pwd.SetFocus;
                end;
            end
            else if RecordCount>0 then
            begin
                f:=TIniFile.Create(ExtractFileDir(application.Exename)+'\SystemSet.ini');
                f.WriteString('LoginSet','Login_Type',trim(Edit_Login_Type.Text));
                f.WriteString('LoginSet','Login_Name',trim(Edit_Login_Name.Text));
                f.WriteString('LoginSet','Login_Time',DateTimeToStr(now));
                f.Free;
                LoginName:=Trim(Edit_Login_Name.Text);//记录登陆人员的名称
                LoginType:=Trim(Edit_Login_Type.Text);     //记录登陆人员的类型
                LoginTime:=now;                     //记录登陆人员的登陆时间
                //提取操作权限
                with frm_DataModule.ADO_QuerySearch do
                begin
                    Close;
                    Sql.Clear;
                    Sql.Add('SELECT Login_Type,Login_Name,Right_Name FROM [UserRight] where Login_Type=:u0 and Login_Name=:u1');
                    Parameters[0].Value:=Trim(Edit_Login_Type.Text);
                    Parameters[1].Value:=Trim(Edit_Login_Name.Text);
                    Open;
                    RightStr:='';
                    if RecordCount>0 then
                    begin
                        First;
                        while not Eof do
                        begin
                            RightStr:=RightStr+FieldByName('Right_Name').asstring+',';
                            Next ;
                        end;
                        //显示主窗体
                        frm_main:=Tfrm_Main.Create(self);
                        frm_Main.StatusBar1.Panels[0].Text:='当前操作员为:'+trim(Edit_Login_Name.Text);
                        frm_Main.ShowModal;
                        frm_Login.close;
                        frm_main.Free;
                    end
                    else
                    begin
                        Application.MessageBox('由于你还没有获得任何管理权限!'+#13#10#13+'不能使用系统!'+#13#10#13+'请与系统管理员取得联系!',Pchar(Application.Title),MB_ICONWARNING);
                        Exit;
                    end;
                end;
            end;
        end;
    end;
    //--------------------------------------------------------------------------
end;

end.

⌨️ 快捷键说明

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