📄 logo.pas
字号:
unit LOGO;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FRMBASSDIALOGS, ComCtrls, MenuBar, ToolWin, ExtCtrls,registry,
DsFancyButton, StdCtrls, DB, DBTables,myself, TFlatEditUnit;
type
TFrm_Logo = class(TFrm_bassDialogs)
Image1: TImage;
Label2: TLabel;
Label1: TLabel;
Query_pass: TQuery;
Label3: TLabel;
E_ID: TFlatEdit;
E_Password: TFlatEdit;
L_name: TLabel;
procedure CB_USERNAMEChange(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure OKBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure E_PasswordKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure E_IDChange(Sender: TObject);
procedure E_IDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
B_halt:bool;
I_logo:integer;
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_Logo: TFrm_Logo;
implementation
uses FRMMAIN, FACE, FRMMESSAGE;
{$R *.dfm}
procedure TFrm_Logo.CB_USERNAMEChange(Sender: TObject);
begin
inherited;
E_password.SetFocus ;
end;
procedure TFrm_Logo.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
S_temppass :string;
begin
inherited;
if b_halt then
begin
query_pass.Close;
query_pass.Free;
application.Terminate ;
exit;
end
else b_halt:=true;
S_temppass:=E_password.text;
USERNAME:=L_name.Caption;
if (E_id.Text='') or (L_name.Caption='未知用户') then //用户名为空
begin
messagedlg(Errormsg0002+'0002+0003',mterror,[mbok],0);
E_id.SetFocus ;
canclose:=false;
exit;
end //end if
else //用户名非空
begin
with query_pass do
begin
first;
while not eof do //检查用户名与密码
begin
if (USERNAME=fieldbyname('USERname').asstring) and
(S_tempPass=fieldbyname('keypass').asstring) then
begin
USERRIGHTSNAME:=fieldbyname('rightsname').AsString ;
USERRIGHTS:=fieldbyname('rights').AsString ;
break;
end;
next;
end; //end while
if eof then //用户名与密码不符
begin
inc(I_logo);
if I_logo>=3 then
begin
messagedlg('您已尝试超过 3 次,系统将停止运行!',mterror,[mbok],0);
query_pass.Close;
query_pass.Free;
application.Terminate ;
end
else
begin
messagedlg('用户名与密码不符,请检查后重新输入。'+#13+#13
+'你还有 '+inttostr(3-I_logo)+' 次机会!',mterror,[mbok],0);
e_password.SetFocus ;
e_password.SelectAll ;
canclose:=false;
exit;
end;
end; //end if
end; //end with
end; //end else if;
frm_main.StatusBar_main.Panels.Items[3].Text:='操作员:【'+USERNAME+'】 权限:〖'+USERRIGHTSNAME+'〗';
frm_message.Show ;
frm_message.Memo_message.Lines.Append(datetimetostr(now)+':'+USERNAME+' - 登录');
query_pass.Free ;
canclose:=true;
end;
procedure TFrm_Logo.OKBtnClick(Sender: TObject);
begin
inherited;
b_halt:=false;
self.Close ;
end;
procedure TFrm_Logo.FormCreate(Sender: TObject);
var
reg:TRegistry;
begin
inherited;
self.Caption :=application.Title + ' - ';
self.Caption :=self.Caption +'用户登录';
I_logo:=0;
query_pass.DatabaseName :=HWSHOPDATA;
B_halt:=true;
reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
with query_pass do
begin
sql.text:='SELECT Systemuser.ID, Systemuser.NAME USERNAME, Systemuser.KEYPASS,'
+' Systemrights.NAME RIGHTSNAME, Systemrights.RIGHTS RIGHTS FROM Systemuser '
+' INNER JOIN Systemrights ON (Systemuser.RIGHTS = Systemrights.NAME)'
+' ORDER BY Systemuser.ID';
try
open;
except
if frm_face.Showing then
frm_face.Destroy ;
messagedlg('数据库打开错误,可能指定的系统数据库文件不存在!'+#13+#13
+'系统将终止运行,请重新尝试打开本程序。'
+#13+#13+'如果依然出现本信息,请与程序供应商联系。',mtError,[mbok],0);
close;
try
reg.DeleteKey(S_RegTree);
finally
reg.CloseKey ;
reg.free;
end;
application.Terminate;
end;
end;
end;
procedure TFrm_Logo.E_PasswordKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if key=27 then
begin
cancelbtnclick(sender);
exit;
end;
if key=13 then okbtn.OnClick(self);
end;
procedure TFrm_Logo.FormShow(Sender: TObject);
begin
inherited;
E_ID.SetFocus ;
end;
procedure TFrm_Logo.E_IDChange(Sender: TObject);
begin
inherited;
with query_pass do
begin
first;
while not eof do
begin
if E_id.Text =fieldbyname('ID').AsString then
begin
L_name.Caption :=fieldbyname('USERName').AsString ;
exit;
end
else
L_name.Caption :='未知用户';
next;
end;
end;
end;
procedure TFrm_Logo.E_IDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if key=27 then
begin
cancelbtnclick(sender);
exit;
end;
if (key=13) or (key=40) then { 判断是按执行键}
Begin
key:=0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -