📄 p_password.pas
字号:
unit p_password;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, jpeg,ActnList;
type
Tf_password = class(TForm)
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
e_password: TEdit;
Label3: TLabel;
ComboBox1: TComboBox;
Image1: TImage;
b_ok: TSpeedButton;
b_cancel: TSpeedButton;
e_user: TDBLookupComboBox;
procedure qx; //自定义过程---登陆时用户的权限设置
procedure b_okClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure b_cancelClick(Sender: TObject);
procedure E_USEKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure JC_DATETIME;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure e_userKeyPress(Sender: TObject; var Key: Char);
procedure e_passwordKeyPress(Sender: TObject; var Key: Char); //检测系统日期时间
private
{ Private declarations }
public
rz_id:longint;//保存登陆日志ID
{ Public declarations }
end;
var
f_password: Tf_password;
user_name:string; //全局变量,保存登陆系统的用户名
implementation
uses p_mc,p_gl,P_DM;
{$R *.dfm}
procedure tf_password.JC_DATETIME;
begin
//检测计算机日期时间是否小于上次登陆日期时间
with dm do
begin
t_dl.Open;
if t_dl['dl_date']>now then
begin
t_dl.Edit;
t_dl['dl_date']:=strtodate('1900-03-20');
t_dl.Post;
application.MessageBox('计算机日期或时间有误,请更正!','登陆失败',mb_ok+mb_iconstop);
f_password.Close;
end
else
begin
t_dl.Edit;
t_dl['dl_date']:=datetostr(now);
t_dl.Post;
// t_dl.Close;
end; //endif
t_dl.Close;
end; //with dm do 语句完毕
end;
procedure tf_password.qx; //自定义过程---登陆时用户的权限设置
var
n:integer;
xz:boolean; //该权限是否选择
begin
with dm,f_gl do
begin
t_qx.Open;
t_qx.Filter:='user_name='''+user_name+'''';
t_qx.Filtered:=true;
t_qx.First;
while not t_qx.eof do
begin
n:=t_qx['menu_id'];
xz:=t_qx['menu_xz'];
if xz then TAction(f_gl.AL.Actions[n]).Enabled:=true else TAction(f_gl.AL.Actions[n]).Enabled:=false;
t_qx.Next;
end; //while ..END
t_qx.Close;
end; //with dm do ..END
end;
procedure Tf_password.b_okClick(Sender: TObject);
begin
f_password.Hide;
f_gl.Show;
end;
procedure Tf_password.SpeedButton1Click(Sender: TObject);
begin
//确认用户密码、权限的合法性
with dm do
begin
t_user.Filter:='name='''+e_user.KeyValue+'''';
t_user.Filtered:=true;
user_name:=t_user['name'];//记录登陆用户用户名
if (trim(e_user.KeyValue)=trim(t_user['name']))and(trim(e_password.Text)=f_gl.jiemi(trim(t_user['password']),123)) then
begin
f_password.JC_DATETIME; //检测计算机日期时间
//写入登陆日志
t_jrrz.Open;
t_jrrz.Filtered:=false;
rz_id:=t_jrrz.RecordCount+1; //记录登录系统ID
DM.CCJRRZ.Parameters[1].Value:=INTTOSTR(rz_id);
DM.CCJRRZ.Parameters[2].Value:=TRIM(USER_NAME);
DM.CCJRRZ.Parameters[3].Value:='系统登陆';
CCJRRZ.ExecProc;
{ t_jrrz.Edit;
t_jrrz.Append;
t_jrrz['rz_id']:=rz_id;
t_jrrz['user_name']:=user_name;
t_jrrz['menu_caption']:='系统登陆';
t_jrrz['jrrq']:=now;
t_jrrz['rq']:=datetostr(now);
t_jrrz.Post; }
t_jrrz.Close;
//日志写完毕
f_password.Hide;
f_gl.Show;
f_gl.ZT.Panels[2].Text:='当前操作员: '+t_user['name'];
f_password.qx; //调用用户的权限过程
t_user.Filtered:=false;
t_user.Close;
end
else
begin
t_user.Filtered:=false;
f_password.e_password.Text:='';
application.MessageBox('您输入的用户或口令有误,注意大小写!','提示',mb_ok+mb_iconinformation);
end; //endif
end; //with .. end
end;
procedure Tf_password.b_cancelClick(Sender: TObject);
begin
dm.ADO.Connected:=false;
close;
end;
procedure Tf_password.E_USEKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then e_password.SetFocus;
end;
procedure Tf_password.FormCreate(Sender: TObject);
begin
dm.T_USER.Open;
e_user.KeyValue:='SYSTEM';
f_password.ShowModal;
end;
procedure Tf_password.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// if application.MessageBox('确认退出系统吗?','退出',mb_yesno+mb_iconquestion)=idno then abort;
application.Terminate;
end;
procedure Tf_password.e_userKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
e_password.SetFocus;
end;
end;
procedure Tf_password.e_passwordKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
b_ok.Click;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -