📄 login.pas
字号:
unit login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, ExtCtrls, Buttons,crypt, ComCtrls, Grids, DBGrids,
TFlatComboBoxUnit, TFlatEditUnit, TFlatButtonUnit, Unit_Public,
TFlatPanelUnit, TFlatGroupBoxUnit;
type
TFormlogin = class(TForm)
QueryRY: TQuery;
YY_GXH_StoredProc: TStoredProc;
PanelTop: TPanel;
ProgressBar1: TProgressBar;
QueryLogin: TQuery;
Query_GH: TQuery;
Label1: TLabel;
EditGH: TFlatComboBox;
Label2: TLabel;
EditMM: TFlatEdit;
Image1: TImage;
PanelCenter: TPanel;
BitBtnCancel: TFlatButton;
BitBtnLog: TFlatButton;
Label3: TLabel;
Label4: TLabel;
Image2: TImage;
FlatButtonExit: TFlatButton;
QueryNewGH: TQuery;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtnLogClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure EditMMKeyPress(Sender: TObject; var Key: Char);
procedure EditGHKeyPress(Sender: TObject; var Key: Char);
procedure EditGHChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtnCancelClick(Sender: TObject);
procedure FlatButtonExitClick(Sender: TObject);
procedure EditGHKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
Procedure SearchByWkNo( pCombobox : TFlatCombobox ; pStr : String );
end;
var
Formlogin: TFormlogin;
implementation
uses dmmain, main,ProcedureP;
{$R *.DFM}
Procedure TFormlogin.SearchByWkNo( pCombobox : TFlatCombobox ; pStr : String );
var
I : Integer ;
begin
//根据输入的工号来进行搜索,主要进行模糊查询和模糊定位
For i:=0 to pCombobox.Items.Count - 1 do
begin
if (copy(pCombobox.Items.Strings[i],1,Length(pStr))=pStr) and (i>7) then
begin
pCombobox.SelStart := i ;
Break;
end;
end;
end;
procedure TFormlogin.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{ case Key of
VK_RETURN,VK_DOWN: SelectNext(ActiveControl,true,true);
VK_UP: SelectNext(ActiveControl,false,true);
end;}
end;
procedure TFormlogin.BitBtnLogClick(Sender: TObject);
var
TmpUserName,TmpPassword:string;
begin
ProgressBar1.Visible := True ;
ProgressBar1.StepIt;
//'9999'为系统自动工号,不能用于登录
if EditGH.Text = '9999' then
begin
Application.MessageBox('您输入的登陆工号属于非法工号,请重新输入!','登录失败',MB_OK+MB_ICONWARNING);
ModalResult := mrNone;
Exit;
end;
ProgressBar1.StepIt;
LogTry := 0; //登录成功,重置LogTry
with QueryRY do
begin
//Close;
//Parambyname('gh').asstring := EditGh.Text;
//Open;
Close;
if Length(Trim(EditGH.Text))<=6 then
begin
if QueryNewGH.Active then QueryNewGH.Close;
QueryNewGH.SQL.Clear;
QueryNewGH.SQL.Add('Select OldGH,NewGH From T_O_GH Where OldGH='''+Trim(EditGH.Text)+''' And CityNo='''+Ps_CityNo+'''');
QueryNewGH.Open;
if QueryNewGH.RecordCount=1 then
begin
Application.MessageBox(PChar('下次请以新工号'+Trim(QueryNewGH.FieldByName('NewGH').AsString)+'登录,谢谢!'),'提示',MB_OK+MB_ICONINFORMATION);
ParamByName('GH').AsString:=Trim(QueryNewGH.FieldByName('NewGH').AsString);
end
else
begin
Application.MessageBox('对不起,您输入的工号或密码非法!无法登陆系统!','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
end
else
Parambyname('gh').asstring := EditGh.Text;
Open;
if (RecordCount <> 1) or (Trim(FieldByName('mm').AsString)<>Trim(EditMM.Text)) then
begin
LogTry := LogTry + 1;
Application.MessageBox('对不起,您输入的工号或密码非法!无法登陆系统!','登录失败',MB_OK+MB_ICONWARNING);
if LogTry = 3 then Application.Terminate;
ProgressBar1.StepBy(-100); // set to max then it can back to 0
ModalResult:= mrNone;
EditGh.SetFocus;
Exit;
end;
FormMain.StatusBarMain.Panels[3].Text := PS_CityNo;
FormMain.StatusBarMain.Panels[5].Text := FieldByName('CITYNAME').AsString;
FormMain.StatusBarMain.Panels[7].Text := FieldByName('gh').AsString + ':' + FieldByName('xm').AsString;
FormMain.StatusBarMain.Panels[9].Text := FieldByName('jbmc').AsString;
FormMain.StatusBarMain.Panels[11].Text := FieldByName('home_name').AsString;
FormMain.Update;
//初始化全局变量
JX := FieldByName('off_no_home').AsInteger;
JBDM := FieldByName('JBDM').AsInteger;
GH := FieldByName('GH').AsString;
ManagerName:=FieldByName('xm').AsString;
ROOMID := Fieldbyname('roomid').asinteger;
PS_HomeName := FieldByName('home_name').AsString;
PS_CityNo := FieldByName('CITYNO').AsString;
PS_CityName := FieldByName('CITYNAME').AsString;
FormMain.StatusBarMain.Repaint;
end;
ProgressBar1.StepIt;
//取系统配置表的数据库用户名并对数据库用户密码解密
with DM_Main.TXtpzb do
begin
if not Active then Open;
TmpUserName := FieldByName('username').AsString;
TmpPassword := Trim(FieldByName('password').AsString);
end;
TmpPassword := Decrypt(TmpPassword,MyKEY);
//重新连接数据库
FormMain.StatusBarMain.Panels[1].Text := '系统正在登录,请稍候...';
FormMain.Update;
with DM_Main.Databasedh do
try
Connected := false;
Params.Clear;
Params.Add('SERVER NAME='+ PS_ConnStr);
Params.Add('USER NAME='+TmpUserName);
Params.Add('PASSWORD='+TmpPassword);
Connected:=true;
LogTry := 0; //登录成功,重置LogTry
except
Application.MessageBox('连接数据库失败!' + chr(10) + chr(13) + '请配置正确的系统配置信息(config.ini)', '系统提示', MB_OK+MB_ICONERROR);
Exit;
end;
//Open all dataset in the DataModule
QueryLogin.Close;
QueryLogin.SQL.Clear;
QueryLogin.SQL.Add('Insert Into T_H_LOGIN(LOGINID,CityNo,Off_No_Home,Wk_No,LOGINTIME) Values(SEQ_LOG_ID.NEXTVAL,'''+PS_CityNo+''','+IntToStr(Jx)+','''+GH+''',sysdate)');
QueryLogin.ExecSQL;
FormMain.InitiateControl(true);
crypt.UserEnter_Log('登入系统','浏览',-1,Gh,'系统登入');
FormMain.InitiateMenu;
ModalResult:= MrOK;
FormMain.StatusBarMain.Panels[1].Text := '系统登录成功!恭喜,恭喜!';
END;
procedure TFormlogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TFormlogin.EditMMKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then BitBtnLogClick(Sender);
end;
procedure TFormlogin.EditGHKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
EditMM.SetFocus;
end;
procedure TFormlogin.EditGHKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (not EditGH.DroppedDown) then
EditGH.DroppedDown := True;
end;
procedure TFormlogin.EditGHChange(Sender: TObject);
begin
if Length(EditGH.Text) <= 6 then
begin
if (Length(EditGH.Text) <> 0) then //没有内容的话,无须进行查询
SearchByWkNo(EditGH,EditGh.Text);
end;
end;
procedure TFormlogin.FormShow(Sender: TObject);
begin
with Query_GH do
begin
Close;
Sql.Clear;
Sql.Add('select * from T_V_Manager where CityNo='+Copy(PS_CityNo, 1, 3)+' Order By Gh ');
Open;
while not Eof do
begin
EditGH.Items.Add(FieldByName('GH').AsString);
Next
end;
end;
EditGH.SetFocus;
// EditGH.SelLength := 0;
// EditGH.SelStart := 4;
// modify by zengzc 工号的长度不能限制为4位
end;
procedure TFormlogin.BitBtnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TFormlogin.FlatButtonExitClick(Sender: TObject);
begin
Application.Terminate ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -