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

📄 untlogin.pas

📁 销售软件
💻 PAS
字号:
(*===========================================================*)
(*                                                           *)
(*              Jerk Computer Assembly Manager               *)
(*                                                           *)
(*                    程序作者:杨芹勍                       *)
(*          武汉科技大学 理学院 信息与计算科学031班          *)
(*                  武汉科技大学 莘特工作室                  *)
(*                                                           *)
(*              IDE:Borland Delphi 2006 Update 2            *)
(*                 第三方控件:Raize 4.03                    *)
(*             数据库:Microsoft SQL Server 2000             *)
(*            数据库访问引擎:原生ADO(ADODB_TLB)           *)
(*           数据库管理引擎:JERK DBMANAGER ALPHA            *)
(*                                                           *)
(*           此软件及源代码归 JERK SYSTEM 版权所有           *)
(*            (C)Copyright 2002-2006 Jerk System.            *)
(*                                                           *)
(*===========================================================*)

unit untLogin;

interface

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  ExtCtrls,
  StdCtrls,
  Mask,
  Buttons,
  RzButton,
  RzEdit,
  RzPanel,
  IniFiles,
  ADODB_TLB,
  JSDBConnect,
  JSValidCode,
  JCAMConsts,
  JCAMDialogForm,
  JCAMServerInfo;

type
  TfrmLogin = class( TfrmJCAMDialogForm )
    Label3: TLabel;
    Label4: TLabel;
    edtUserName: TRzEdit;
    edtPassword: TRzEdit;
    Label1: TLabel;
    edtValidCode: TRzEdit;
    btnServerInfo: TRzBitBtn;
    RzPanel1: TRzPanel;
    vdcLogin: TJSValidCode;
    procedure btnOKClick( Sender: TObject );
    procedure FormResize( Sender: TObject );
    procedure FormShow( Sender: TObject );
    procedure btnServerInfoClick( Sender: TObject );
    procedure FormCreate( Sender: TObject );
    procedure btnCancelClick( Sender: TObject );
    procedure vdcLoginClick( Sender: TObject );
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmLogin: TfrmLogin;

implementation

{$R *.dfm}

uses
  untTEmployee,
  untMain,
  untServerInfo (*,
  untSplash*);

procedure TfrmLogin.btnCancelClick( Sender: TObject );
begin
  inherited;

  FreeAndNil( Self );
  Application.Terminate;
end;

procedure TfrmLogin.btnOKClick( Sender: TObject );
var
  ini: TIniFile;
  te: TTableEmployee;
  si: TJCAMServerInfo;
  bIsCanLogin, bIsCanModify: Boolean;
  sServerInfoString, sDataSource, sUserID, sPassword, sLoginName,
    sLoginPassword, sValidCode: string;
begin
  inherited;

  Screen.Cursor := crHourGlass;

  sLoginName := edtUserName.Text;
  sLoginPassword := edtPassword.Text;
  sValidCode := edtValidCode.Text;

  if ( sLoginName = EmptyStr ) or ( sLoginPassword = EmptyStr ) then
  begin
    Screen.Cursor := crDefault;
    vdcLogin.MakeValidCode;
    Exit;
  end;

  // TODO: 检查验证码是否正确
  if not SameText( sValidCode, vdcLogin.ValidCode ) then
  begin
    Screen.Cursor := crDefault;
    MessageBox( Self.Handle, PChar( RSTR_LOGIN_VALIDCODEERR ),
      PChar( STR_APPTITLE ), MB_ICONEXCLAMATION );

    vdcLogin.MakeValidCode;
    edtValidCode.Text := EmptyStr;
    edtValidCode.SetFocus;
    Exit;
  end;

  // TODO: 获取服务器信息
  ini := TIniFile.Create( g_sConfigFileName );
  sServerInfoString := ini.ReadString( STR_SERVERINFO, STR_SERVERINFOSTRING,
    EmptyStr );
  FreeAndNil( ini );

  si := TJCAMServerInfo.Create;
  with si do
  begin
    ServerInfoString := sServerInfoString;
    sDataSource := DataSource;
    sUserID := UserID;
    sPassword := Password;
  end;
  FreeAndNil( si );

  // TODO: 连接到 SQL Server
  g_cnJCAMIS := CoConnection.Create;
  if not ConMSSQL( g_cnJCAMIS, STR_APPDBNAME, sDataSource, sUserID, sPassword )
    then
  begin
    Screen.Cursor := crDefault;
    g_cnJCAMIS := nil;
    MessageBox( Self.Handle, PChar( RSTR_LOGIN_LINKDBFAILED ), PChar(
      STR_APPTITLE ), MB_ICONWARNING );
    Exit;
  end;

  te := TTableEmployee.Create;
  with te do
  begin
    Connection := g_cnJCAMIS;

    // TODO: 判断用户是否合法
    if CheckUserValid( sLoginName, sLoginPassword, bIsCanLogin, bIsCanModify )
      then
    begin
      // TODO: 判断是否允许登陆
      if not bIsCanLogin then
      begin
        MessageBox( Self.Handle, PChar( RSTR_LOGIN_USERLOCKED ),
          PChar( STR_APPTITLE ), MB_ICONEXCLAMATION );

        vdcLogin.MakeValidCode;
        edtUserName.SetFocus;
      end
      else
      begin
        // TODO: 载入主窗体
        FreeAndNil( Self );
        Application.CreateForm( TfrmMain, frmMain );

        // TODO: 载入启动窗体
        //Application.CreateForm( TfrmSplash, frmSplash );
        //frmSplash.Show;

        with frmMain do
        begin
          LoginName := sLoginName;
          StartSurf;
          Show;
        end;
      end;
    end
    else
    begin
      Screen.Cursor := crDefault;
      MessageBox( Self.Handle, PChar( RSTR_LOGIN_PWREINPUT ),
        PChar( STR_APPTITLE ), MB_ICONEXCLAMATION );

      vdcLogin.MakeValidCode;
      edtPassword.Text := EmptyStr;
      edtUserName.SetFocus;
    end;
  end;
  FreeAndNil( te );

  Screen.Cursor := crDefault;
end;

procedure TfrmLogin.btnServerInfoClick( Sender: TObject );
begin
  inherited;

  frmServerInfo := TfrmServerInfo.Create( Self );
  frmServerInfo.ShowModal;
end;

procedure TfrmLogin.FormCreate( Sender: TObject );
begin
  inherited;

  g_sConfigFileName := ExtractFilePath( ParamStr( 0 ) ) + STR_CONFIGFILENAME;
  vdcLogin.MakeValidCode;

  (*edtUserName.Text := 'user';
  edtPassword.Text := 'user';
  edtValidCode.Text := vdcLogin.ValidCode; *)
end;

procedure TfrmLogin.FormResize( Sender: TObject );
begin
  inherited;

  btnServerInfo.SetBounds( btnOK.Left - btnServerInfo.Width - 8, btnOK.Top,
    btnServerInfo.Width, btnServerInfo.Height );
end;

procedure TfrmLogin.FormShow( Sender: TObject );
begin
  inherited;

  FormResize( Self );
end;

procedure TfrmLogin.vdcLoginClick( Sender: TObject );
begin
  inherited;

  vdcLogin.MakeValidCode;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -