📄 unitlogin.~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 + -