⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 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 + -