📄 u_login.pas
字号:
unit U_login;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, ADODB;
type
TF_Login = class(TForm)
BTN_OK: TBitBtn;
BTN_CANCEL: TBitBtn;
BTN_Exit: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Name_label: TLabel;
Timer: TTimer;
Q_Login: TADOQuery;
Shape1: TShape;
Shape2: TShape;
Label3: TLabel;
Login_Time: TLabel;
Image1: TImage;
BitBtn1: TBitBtn;
procedure TimerTimer(Sender: TObject);
procedure BTN_CANCELClick(Sender: TObject);
procedure BTN_ExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BTN_OKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_Login: TF_Login;
TIMES: INTEGER;
implementation
uses U_data, U_main;
{$R *.dfm}
procedure TF_Login.TimerTimer(Sender: TObject);
begin
Login_Time.caption := Datetimetostr(now());
end;
procedure TF_Login.BTN_CANCELClick(Sender: TObject);
begin
Login_code := '';
Login_name := '';
SYS_Login_time := now();
Close;
end;
procedure TF_Login.BTN_ExitClick(Sender: TObject);
begin
APPLICATION.Terminate;
end;
procedure TF_Login.FormCreate(Sender: TObject);
begin
Timer.Enabled := true;
Times := 0;
end;
procedure TF_Login.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then
begin
Sql_s := 'Select Username from TB_Acount where UCode=''' + trim(edit1.Text) + '''';
Sql_open(sql_s);
if DM.Q_TempA.RecordCount <= 0 then
begin
MessageDlg('没有这个用户,请检查输入的是否正确!', mtWarning, [mbOK], 0);
Edit1.SetFocus;
Edit1.SelectAll;
Exit;
end;
Name_label.Caption := DM.Q_TempA.fieldbyname('Username').AsString;
edit2.SetFocus;
end;
end;
procedure TF_Login.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then
Btn_OKClick(sender);
end;
procedure TF_Login.BTN_OKClick(Sender: TObject);
var
s: string;
begin
if TRIM(EDIT1.TEXT) = '' then
begin
APPLICATION.MESSAGEBOX('没有输入账号', '系统提示', MB_OK);
EDIT1.SETFOCUS;
TIMES := TIMES + 1;
EXIT;
end;
if not ((EDIT1.TEXT = 'SYSTEM') and (EDIT2.TEXT = 'huangxiaomin998')) then
begin
s := 'select * from TB_Acount WHERE Ucode=''' + trim(edit1.Text) + ''' and 1=1'; //先断是否有这用户
Q_Login.Close;
Q_Login.sql.clear;
Q_Login.sql.add(s);
Q_Login.open;
if Q_Login.RecordCount <= 0 then
begin
APPLICATION.MESSAGEBOX('不存在这个账号,请重新重入', '系统提示', MB_OK);
TIMES := TIMES + 1;
EDIT1.SETFOCUS;
EXIT;
end;
S := S + ' and Endtime>=Getdate()+1'; //断此用户是否过期
Q_Login.Close;
Q_Login.sql.clear;
Q_Login.sql.add(s);
Q_Login.open;
if Q_login.RecordCount <= 0 then
begin
application.MessageBox('此用户使用期已过,请与管理员联系', '系统提示', mb_ok);
exit;
end;
if Q_login.FieldByName('Uactive').AsBoolean then
begin
MessageDlg('此账号有人在使用,请用别的账号登录!', mtWarning, [mbOK], 0);
exit;
end;
if UPPERCASE(trim(edit2.text)) <> UPPERCASE(trim(Q_Login.fieldBYNAME('Password').asstring)) then
begin
if TIMES >= 4 then
begin
application.MessageBox('你已经失去了最後一次机会,请与管理员联系', '系统提示', mb_ok);
APPLICATION.Terminate;
end;
application.MessageBox('密码不正确,请重新输入', '系统提示', mb_ok);
TIMES := TIMES + 1;
edit2.text := '';
edit2.SetFocus;
exit;
end;
//LOGIN_CLASS := QUERY1.FIELDBYNAME('CLASS').ASINTEGER;
LOGIN_Code := Q_Login.FIELDBYNAME('Ucode').ASSTRING;
LOGIN_NAME := Q_Login.FIELDBYNAME('Username').ASSTRING;
SYS_Login_time := now();
SQL_S := 'Select * from TB_sysseting ';
SQL_open(Sql_s);
if Dm.Q_TempA.RecordCount = 1 then //设置系统语言
syslanguage := Dm.Q_TempA.FieldByName('syslanguage').AsInteger
else
syslanguage := 0; //默认为简体中文
//FAC_CODE := Q_Login.FIELDBYNAME('FAC_CODE').ASSTRING;
end;
//LOGIN_CODE := TRIM(UPPERCASE(EDIT1.TEXT));
SQL_S := 'UPDATE TB_Acount SET LastIP=''' + user_IP + ''',Computername=''' + COMPUTER_NAME + ''',Uactive=1 WHERE UCODE='''
+ LOGIN_CODE + '''';
SQL_EXEC(SQL_S);
F_LOGIN.CLOSE;
end;
procedure TF_Login.FormShow(Sender: TObject);
begin
SQL_S := 'UPDATE TB_Acount SET LastIP=''' + user_IP + ''',Computername=''' + COMPUTER_NAME + ''',Uactive=0 WHERE UCODE='''
+ LOGIN_CODE + '''';
SQL_EXEC(SQL_S);
end;
procedure TF_Login.BitBtn1Click(Sender: TObject);
begin
Sql_s := 'update TB_Acount set Uactive=0 where Ucode=''' + trim(edit1.text) + '''';
SQL_exec(sql_s);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -