📄 login.pas
字号:
unit login;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Registry, Buttons, ExtCtrls, WinSkinData, DB, DBTables,
XPMenu, SUIForm;
type
TFrmlogin = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Eduser: TEdit;
Edpwd: TEdit;
db1: TDatabase;
QryGn: TQuery;
Qryuser: TQuery;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
//function GetUser(var userName,MyPermission:String):Boolean;
private
{ Private declarations }
MyReg:TRegistry; //系统注册表
lastUser:String; //上次登录的用户名
validUser:String; //获取的有效用户名
valid:Boolean; //登录成功判断
fSuper:Boolean; //是否系统管理员
IsFirstTime:Boolean;
public
{ Public declarations }
end;
function GetUser(var userName,MyPermission:String):Boolean;
var
Frmlogin: TFrmlogin;
implementation
uses mycommon,server, main;
{$R *.dfm}
procedure TFrmlogin.Button2Click(Sender: TObject);
begin
close;
end;
procedure TFrmlogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MyReg.Free;
if QryUser.Active =true then
QryUser.Close;
if QryGn.Active =true then
QryGn.Close;
if db1.Connected =true then
db1.Connected:=False;
end;
function GetUser(var UserName,MyPermission:String):Boolean;
var
QryTemp:TQuery;
modCnt, i :word;
FrmLogIn: TFrmLogIn;
begin
UserName:='';
MyPermission:='';
Result :=false;
FrmLogin:=TFrmlogin.Create(Application);
with Frmlogin do
begin
try
QryTemp:=TQuery.Create(Application);
QryTemp.DatabaseName:='logindb';
with QryTemp do
begin
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM operuser');
Open;
if eof then
begin
IsFirstTime:=True;
Caption:='第一次登录,设置管理员密码';
EdUser.Enabled:=False;
EdUser.Text:='Administrator';
end
else
begin
IsFirstTime:=False;
end;
end;
ShowModal;
if not valid then exit;
UserName:=validUser;
QryGn.Active:=true;
modCnt:=QryGn.Fields[0].asInteger;
if fSuper then
begin
SetLength(MyPermission,modCnt);
for i:=1 to modCnt do MyPermission[i]:='Y';
end
else
begin
QryUser.close;
QryUser.parambyname('name').asstring:=edUser.text;
QryUser.parambyname('pwd').asstring:=Encrypt(edpwd.text);
QryUser.open;
MyPermission:=QryUser.FieldByName('userright').asstring;
if Length(MyPermission)<modCnt then
begin
SetLength(MyPermission,modCnt);
for i:=Length(MyPermission) to modCnt do
MyPermission[i]:='N';
end;
end;
Result :=True;
finally
Free;
end;
end;
end;
procedure TFrmlogin.FormCreate(Sender: TObject);
begin
//变量初始化
lastUser:='';
validUser:='';
valid:=False;
fSuper:=False;
db1.LoginPrompt:=False;
db1.Params.Clear;
db1.Params.add('USER NAME='+pusername);
db1.Params.add('PASSWORD='+ppassword);
//访问注册表,取上次用户登录的工号
MyReg:=TRegistry.Create;
if MyReg.OpenKey('\Software\jcgl\UserLog',True) then
begin
try
LastUser:=MyReg.ReadString('LastUser');
except
LastUser:='';
end;
MyReg.CloseKey ;
end;
edUser.Text :=LastUser; //给用户名赋值
end;
procedure TFrmlogin.BitBtn1Click(Sender: TObject);
var
QryTemp:TQuery;
begin
if IsFirstTime Then
begin
QryTemp:=TQuery.Create(Application);
QryTemp.DatabaseName:='logindb';
QryTemp.SQL.Add('insert into operuser (username,password,Administrator) Values (:name,:pwd,1)');
QryTemp.parambyname('name').asstring:=edUser.text;
QryTemp.parambyname('name').asstring:='Administrator';
QryTemp.parambyname('pwd').asstring:=Encrypt(edpwd.text);
QryTemp.ExecSQL;
Valid:=True;
ValidUser:=edUser.text;
fSuper:=True;
if (edUser.Text<>LastUser) then
if MyReg.OpenKey('\Software\jcgl\UserLog',True) then
begin
MyReg.WriteString('LastUser',edUser.Text);
MyReg.CloseKey ;
end;
// Close; //关闭窗口
end
else
begin
QryUser.close;
QryUser.parambyname('name').asstring:=edUser.text;
QryUser.parambyname('pwd').asstring:=Encrypt(edpwd.text);
QryUser.open;
if not QryUser.eof then
begin
Application.MessageBox('登录成功!','信息',mb_ok or mb_iconInformation);
Valid:=True;
ValidUser:=QryUser.fieldbyname('username').asstring;
//frmmain.StatusBar1.Panels[1].Text := '登录用户:'+Validuser;
if QryUser.FieldByName('Administrator').asboolean=True then fSuper:=True;
if (edUser.Text<>LastUser) then
//frmmain.StatusBar1.Panels[0].Text := '登录用户:'+Qryuser.parambyname('name').AsString;
if MyReg.OpenKey('\Software\jcgl\UserLog',True) then
begin
MyReg.WriteString('LastUser',edUser.Text);
MyReg.CloseKey ;
end;
QryUser.close;
Close;
end;
if not valid then
begin
Application.MessageBox('用户名或密码错误,'+#13+'请重新输入!','错误',mb_ok or mb_iconError);
edUser.SetFocus;
edUser.text:='';
edpwd.Text:='';
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -