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

📄 login.pas

📁 本系统为演示Delphi的功能而开发设计
💻 PAS
字号:
unit login;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TLoginForm = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    EditLoginName: TEdit;
    EditPassWord: TEdit;
    ButtonOk: TButton;
    ButtonCancel: TButton;
    procedure ButtonOkClick(Sender: TObject);
    procedure ButtonCancelClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  LoginForm: TLoginForm;
  LoginFlag:integer;
  DataFlag:integer;
  inputtimes:Integer;
  LoginName,FullName,CodeComp,CodeSite,Secruity: String;
  LoginTime:TdateTime;

implementation

uses LoginData;

{$R *.DFM}

procedure TLoginForm.ButtonOkClick(Sender: TObject);
begin
Try
if Length(EditLoginname.text)=0 then
   Begin
   ShowMessage('用户名不能为空,请重新输入');
   Exit;
   End;
If DataFlag=0 Then
   Begin
   SystemData:=TSystemData.Create(Application);
   DataFlag:=1;
   End;
if inputtimes <= 3 then
   Begin
     With SystemData.QueryUser Do
          begin
          Close;
          Unprepare;
          With Sql Do
          Begin
          Clear;
          Add('Select * From system_user_info Where (login_name=:name) and (pass_word=:pass_word)')
          End;
          RequestLive:=True;
          ParamByName('name').AsString:=EditLoginname.Text;
          ParamByName('pass_word').AsString:=EditPassWord.Text;
          PrePare;
          Open;
          End;
   inputtimes:=inputtimes+1;
   End;

If SystemData.QueryUser.RecordCount=1 then
  begin
    LoginFlag:=1;
    CodeComp:=SystemData.QueryUser.FieldByName('comp_code').AsString;
    CodeSite:=SystemData.QueryUser.FieldByName('site_code').AsString;
    FullName:=SystemData.QueryUser.FieldByName('username').AsString;
    LoginName:=SystemData.QueryUser.FieldByName('login_name').AsString;
    Secruity:=SystemData.QueryUser.FieldByName('privilege').AsString;
    SystemData.QueryUser.Edit;
    SystemData.QueryUser.FieldByName('login_status').AsString:='在线';
    SystemData.QueryUser.Post;
    SystemData.QueryUser.Close;
    With SystemData.QueryLogin Do
          begin
          Close;
          Unprepare;
          With Sql Do
          Begin
          Clear;
          Add('Select * From user_login_info Where login_name=:loginname');
          End;
          RequestLive:=True;
          ParamByName('loginname').AsString:='****';
          prepare;
          Open;
          End;
    SystemData.QueryLogin.Insert;
    LoginTime:=Now;
    SystemData.QueryLogin.FieldByName('login_name').Value:=EditLoginname.Text;
    SystemData.QueryLogin.FieldByName('login_time').Value:=LoginTime;
    SystemData.QueryLogin.FieldByName('exit_time').Value:=LoginTime;
    SystemData.QueryLogin.FieldByName('username').Value:=FullName;
    SystemData.QueryLogin.Post;
    SystemData.QueryLogin.Close;
    Close;
end
else if SystemData.QueryUser.RecordCount<>1 then
     Begin
        If inputtimes<3 Then
          ShowMessage('用户名或口令输入错误,请重试')
        Else
        Begin {输入超过三次,程序终止。}
          LoginFlag:=0;
          ShowMessage('用户名或口令连续三次输入错误,退出登录过程');
          Close;
        End;
     End;
     SystemData.QueryUser.Close;
     SystemData.QueryLogin.Close;
Except
      On E:Exception Do
      Begin
      ShowMessage('数据库连接失败,请检验网络连接是否正常');
      Application.Terminate;
      End;
End;
End;

procedure TLoginForm.ButtonCancelClick(Sender: TObject);
begin
LoginFlag:=0;
end;


procedure TLoginForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
If key=#13 then { 判断是按执行键}
 Begin { 不是在TDbgrid控件内}
    key:=#0;
    perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
 End;
end;

procedure TLoginForm.FormCreate(Sender: TObject);
begin
LoginFlag:=0;
inputtimes:=0;
DataFlag:=0;
end;


end.

⌨️ 快捷键说明

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