u_logon.~pas

来自「SQL的应用」· ~PAS 代码 · 共 199 行

~PAS
199
字号
unit U_Logon;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, jpeg ,ShellApi;
type
  TF_Logon = class(TForm)
    Edit_User: TEdit;
    Edit_Pwd: TEdit;
    Label_User: TLabel;
    Label_Pwd: TLabel;
    BitBtn_Logon: TBitBtn;
    BitBtn_Leave: TBitBtn;
    Image1: TImage;
    Label_Me: TLabel;
    Label_Endo: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label_Reg: TLabel;
    procedure BitBtn_LogonClick(Sender: TObject);
    procedure BitBtn_LeaveClick(Sender: TObject);
    procedure Edit_UserKeyPress(Sender: TObject; var Key: Char);
    procedure Edit_PwdKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure Label_EndoClick(Sender: TObject);
    procedure Label_EndoMouseEnter(Sender: TObject);
    procedure Label_EndoMouseLeave(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Label_RegMouseEnter(Sender: TObject);
    procedure Label_RegMouseLeave(Sender: TObject);
    procedure Label_RegClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_Logon: TF_Logon;
  count:Integer;
implementation
  Uses U_DBPublicPack,U_RecordStruct,U_Report,U_Main,U_About,U_Reg;
{$R *.dfm}

procedure TF_Logon.BitBtn_LogonClick(Sender: TObject);
var
  UserName,UserPwd,QryStr:String;
  Power:Integer;
begin
  if (Edit_User.Text='') Or (Edit_Pwd.Text='')  then
  Begin
    Showmessage('请输入用户名和密码!');
    Edit_Pwd.SetFocus;
    Exit;
  End
  else
  Begin
    UserName:=Trim(Edit_User.Text);UserPwd:=Trim(Edit_Pwd.Text);
    InitCreateADO;
    if ConnectDataBase()=True then
    with ADOQry Do
    Begin
      Try
        DBTableName:=ReadConfig(IniFileName,'DBTableName','Logon');//获取表名
        QryStr:='Select * From '+DBTableName+' Where UserName='+''''+UserName+'''';
        Close;SQL.Clear;SQL.Add(QryStr);Open;
        if UserPwd=trim(ADOQry.FieldByName('UserPwd').AsString) then
           Begin
           Power:=ADOQry.FieldByName('Power').AsInteger;
           F_Main.StatusBar_DB.Panels[2].Text:='当前用户:'+F_Logon.Edit_User.Text;
           F_Main.StatusBar_DB.Panels[3].Text:='权限:'+ADOQry.FieldByName('Interpret').AsString;
           F_Main.Show;
           F_Logon.Hide;
           DBTableName:=F_Main.TreeView_DB.Items.Item[1].Text;
           GetDBTableInfo(DBTableName);
           DestroyDBEditAndDBText(F_main.DBGrid_DB);
           CreateDBEditAndDBText(F_main.DBGrid_DB);
           Case Power of
           1://管理员权限 Manager
             Begin
               //什么也没有限制
             End;
           2://普通用户权限 User
             Begin
               F_Main.N_DataBackup.Visible:=False;
               F_Main.N_DataRestore.Visible:=False;
             End;
           3://游客权限 Guest
             Begin
               F_Main.N_DataBackup.Visible:=False;
               F_Main.N_DataRestore.Visible:=False;
               F_Main.BitBtn_Add.Enabled:=False;
               F_Main.BitBtn_Delete.Enabled:=False;
               F_Main.BitBtn_Edit.Enabled:=False;
             End;
           4://几乎没什么权限
             Begin
               F_Main.N_DataBackup.Visible:=False;
               F_Main.N_DataRestore.Visible:=False;
               F_Main.BitBtn_Add.Enabled:=False;
               F_Main.BitBtn_Delete.Enabled:=False;
               F_Main.BitBtn_Edit.Enabled:=False;
               F_Main.N_ToReport.Enabled:=False;
               F_Main.N_ToExcel.Enabled:=False;
             End;
           End;
         End
         Else
         Begin
           Showmessage('对不起!你输入的用户名或密码有误,请重新输入!');
           Edit_User.Text:='';Edit_Pwd.Text:='';Edit_User.SetFocus;
         End;
         Except
           Exit;
         End;
      End;
  End;
end;

procedure TF_Logon.BitBtn_LeaveClick(Sender: TObject);
begin
  if Messagedlg('确定要离开吗?',MtWarning,MbOKCancel,0)=MrOk then
     Application.Terminate
  Else Edit_User.SetFocus;
end;

procedure TF_Logon.Edit_UserKeyPress(Sender: TObject; var Key: Char);
begin
  If Key=#13 Then BitBtn_Logon.Click;
end;

procedure TF_Logon.Edit_PwdKeyPress(Sender: TObject; var Key: Char);
begin
  If Key=#13 Then BitBtn_Logon.Click;
end;

procedure TF_Logon.FormCreate(Sender: TObject);
Var
  ErrNo:Integer;
//  hMutex:HWND;
begin
  Label_Me.Hint:='Something must be done!'+#13+'Something never be done!'+#13;
  Label_Me.Hint:=Label_Me.Hint+'Something sometimes be done!'+#13+'Just do it !';
//  hMutex:=CreateMutex(Nil,False,Pchar(Application.Title));
  ErrNO:=GetLastError;
  If ErrNO=ERROR_ALREADY_EXISTS Then
    Begin
      Application.MessageBox('对不起!Endo数据库软件重复运行,即将退出','重复运行',MB_OK);
      Application.Terminate;
    End;  
end;

procedure TF_Logon.Label_EndoClick(Sender: TObject);
var
  Url:string;
begin
  Url:='http://endo.533.net/';
  ShellExecute(Handle,'Open',Pchar(Url),nil,nil,sw_normal);
end;

procedure TF_Logon.Label_EndoMouseEnter(Sender: TObject);
begin
  Label_Endo.Font.Color:=ClBlue;
  Label_Endo.Font.Style:=Label_Endo.Font.Style+[FsUnderline]
end;

procedure TF_Logon.Label_EndoMouseLeave(Sender: TObject);
begin
  Label_Endo.Font.Color:=ClBlack;
  Label_Endo.Font.Style:=Label_Endo.Font.Style-[FsUnderline];
end;

procedure TF_Logon.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.Terminate;
end;

procedure TF_Logon.Label_RegMouseEnter(Sender: TObject);
begin
  Label_Reg.Font.Color:=ClBlue;
end;

procedure TF_Logon.Label_RegMouseLeave(Sender: TObject);
begin
  Label_Reg.Font.Color:=ClBlack;
end;

procedure TF_Logon.Label_RegClick(Sender: TObject);
begin
  F_Reg.Show;
  F_Logon.Hide;
end;

end.

⌨️ 快捷键说明

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