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

📄 login.pas

📁 软件类别: 数据库 软件大小: 2.60M 运行环境: Win9xNT/2000/XP 一套车辆管理系统,此版本为商业版,大家一定用的着。
💻 PAS
字号:
unit Login;

interface

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

type
  Tfrm_Login = class(TForm)
    Panel1: TPanel;
    Cmd_Cancel: TSpeedButton;
    GroupBox1: TGroupBox;
    Cmd_OK: TSpeedButton;
    UserType: TComboBox;
    UserName: TComboBox;
    UserPwd: TLabeledEdit;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox2: TGroupBox;
    Label5: TLabel;
    Label6: TLabel;
    Edit_Time: TEdit;
    Edit_Date: TEdit;
    Lab_Error: TLabel;
    XPMenu1: TXPMenu;
    CheckBox1: TCheckBox;
    Cmd_Read_INI: TSpeedButton;
    procedure Cmd_CancelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Cmd_OKClick(Sender: TObject);
    procedure UserTypeKeyPress(Sender: TObject; var Key: Char);
    procedure UserNameKeyPress(Sender: TObject; var Key: Char);
    procedure UserPwdKeyPress(Sender: TObject; var Key: Char);
    procedure UserTypeChange(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Cmd_Read_INIClick(Sender: TObject);
  private
    { Private declarations }
    PassTime:Byte;
    tempPwd:string;
  public
    { Public declarations }
  end;

var
  frm_Login: Tfrm_Login;
  f: TIniFile;
implementation

uses Data, Main, func;

{$R *.dfm}

procedure Tfrm_Login.Cmd_CancelClick(Sender: TObject);
begin
    system.Halt(0);
end;

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

procedure Tfrm_Login.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    system.Halt;
end;

procedure Tfrm_Login.Cmd_OKClick(Sender: TObject);
begin
    inc(PassTime);
    //
    //**************************************************************************
    //运用开发用户的密码
    if CheckBox1.Checked=True then
    begin
        if ((trim(UserType.Text)='system') and (Trim(UserName.Text)='system') and  (Trim(UserPwd.Text)='system')) then
        begin
            f:=TIniFile.Create(ExtractFileDir(application.Exename)+'\Login.ini');
            f.WriteString('NetSetting','User_Type','超级用户');
            f.WriteString('NetSetting','User_Name',trim(userName.Text));
            f.WriteString('NetSetting','User_Date',trim(Edit_Date.Text));
            f.WriteString('NetSetting','User_Time',trim(Edit_Time.Text));
            f.Free;
            func.Pub_Right:='';
            func.Login_Name:=Trim(UserName.Text);//调用INI文件的登陆人员的名称的过程
            Cmd_Read_INIClick(Sender); //调用INI文件的单位信息的过程
            //显示主窗体
            frm_main:=Tfrm_Main.Create(self);
            frm_main.Cmd_UserType.Enabled:=true;
            frm_main.Cmd_Cancel.Enabled:=True;
            frm_main.Cmd_Right.Enabled:=True;
            frm_main.Cmd_Change.Enabled:=True;
            frm_main.Cmd_User.Enabled:=True;
            frm_Main.StatusBar1.Panels[0].Text:='当前操作员为:超级用户';
            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);
                UserPwd.Text:='';
                UserPwd.SetFocus;
            end;
            UserPwd.SetFocus;
            UserPwd.SelectAll;
            exit;
        end;
    end;
    //**************************************************************************
    //
    //--------------------------------------------------------------------------
    //不运用开发用户密码
    if CheckBox1.Checked=False then
    begin
        tempPwd:=Decrypt(trim(UserPwd.Text),'luersoft');  //解开密码
        with frm_data.Query_Login do
        begin
            Close;
            Sql.Clear;
            Sql.Add('Select * from [Login] where User_Type='''+Trim(UserType.Text)+''' and user_Name='''+trim(userName.Text)+''' and User_Pwd='''+Trim(tempPwd)+'''');
            open;
            if frm_data.Query_Login.RecordCount<1 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);
                    UserPwd.Text:='';
                    UserPwd.SetFocus;
                end;
            end
            else if frm_data.Query_Login.RecordCount=1 then
            begin
                f:=TIniFile.Create(ExtractFileDir(application.Exename)+'\Login.ini');
                f.WriteString('NetSetting','User_Type',trim(userType.Text));
                f.WriteString('NetSetting','User_Name',trim(userName.Text));
                f.WriteString('NetSetting','User_Date',trim(Edit_Date.Text));
                f.WriteString('NetSetting','User_Time',trim(Edit_Time.Text));
                f.Free;
                func.Login_Name:=Trim(UserName.Text); //调用INI文件的登陆人员的名称的过程
                Cmd_Read_INIClick(Sender);//调用INI文件的单位信息的过程
                //提取操作权限
                with frm_Data.Query_Stored do
                begin
                    Close;
                    Sql.Clear;
                    Sql.Add('SELECT * FROM [User_Right_View] where User_Type='''+trim(UserType.Text)+''' and User_Name='''+Trim(UserName.Text)+'''');
                    Open;
                    func.Pub_Right:='';
                    if frm_Data.Query_Stored.RecordCount>0 then
                    begin
                        First;
                        while not Eof do
                        begin
                            func.Pub_Right:=func.Pub_Right+frm_data.Query_Stored.FieldByName('Right_Name').asstring+',';
                            Next ;
                        end;
                        //显示主窗体
                        frm_main:=Tfrm_Main.Create(self);
                        frm_Main.StatusBar1.Panels[0].Text:='当前操作员为:'+trim(UserName.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;

procedure Tfrm_Login.UserTypeKeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then UserName.SetFocus;
end;

procedure Tfrm_Login.UserNameKeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then UserPwd.SetFocus;
end;

procedure Tfrm_Login.UserPwdKeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then Cmd_OKClick(sender);
end;

procedure Tfrm_Login.UserTypeChange(Sender: TObject);
begin
    if UserType.ItemIndex=0 then
    begin
        Application.MessageBox('',Pchar(Application.Title),MB_ICONWARNing);
        UserType.SetFocus;
    end;
    with frm_data.Query_Login do
    begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT Distinct User_Name FROM [Login] WHERE User_Type='''+Trim(UserType.Text)+''' ');
        Try
            Prepared;
            Open;
            UserName.Clear;//先清空 UserName的值
            //**********************************
            //加载开发用户密码
            if Trim(UserType.Text)='system' then
            begin
                UserName.Items.Add('system');
            end;
            //**********************************
            while Not EOf do
            begin
                UserName.Items.Add(frm_data.Query_Login.FieldByName('User_Name').AsString);
                Next;
            end;
        Except
            Application.MessageBox('系统错误!系统在打开数据表【Login】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
            Exit;
        End;
    end;
end;

procedure Tfrm_Login.CheckBox1Click(Sender: TObject);
begin
    if checkBox1.Checked=true then
    begin
        UserType.Text:='system';
        UserName.Text:='system';
    end;
end;
//******************************************************************************
//利用INI文件
//读出使用软件单位的信息
procedure Tfrm_Login.Cmd_Read_INIClick(Sender: TObject);
var
    MyIni:TiniFile;
begin
    MyIni:=TIniFile.Create(ExtractFileDir(application.Exename)+'\DWXX.ini');
    func.Use_mond:=MyIni.ReadString('NetSetting','GSMC','');     //单位名称
    func.Mond_Address:=MyIni.ReadString('NetSetting','DWDZ',''); //单位地址
    func.Link_Tel:=MyIni.ReadString('NetSetting','LXDH','');     //联系电话
    func.Link_Man:=MyIni.ReadString('NetSetting','LXRY','');     //联系人员
    MyIni.Free;
end;
//******************************************************************************
end.

⌨️ 快捷键说明

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