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

📄 logo.pas

📁 pos商场、超市管理系统
💻 PAS
字号:
unit LOGO;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FRMBASSDIALOGS, ComCtrls, MenuBar, ToolWin, ExtCtrls,registry,
  DsFancyButton, StdCtrls, DB, DBTables,myself, TFlatEditUnit;

type
  TFrm_Logo = class(TFrm_bassDialogs)
    Image1: TImage;
    Label2: TLabel;
    Label1: TLabel;
    Query_pass: TQuery;
    Label3: TLabel;
    E_ID: TFlatEdit;
    E_Password: TFlatEdit;
    L_name: TLabel;
    procedure CB_USERNAMEChange(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure OKBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure E_PasswordKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure E_IDChange(Sender: TObject);
    procedure E_IDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    B_halt:bool;
    I_logo:integer;
    { Private declarations }            
  public
    { Public declarations }
  end;

var
  Frm_Logo: TFrm_Logo;

implementation

uses FRMMAIN, FACE, FRMMESSAGE;

{$R *.dfm}

procedure TFrm_Logo.CB_USERNAMEChange(Sender: TObject);
begin
  inherited;
   E_password.SetFocus ;
end;

procedure TFrm_Logo.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
   S_temppass :string;
begin
  inherited;
   if b_halt then
   begin
      query_pass.Close;
      query_pass.Free;
      application.Terminate  ;
      exit;
   end
   else b_halt:=true;
   S_temppass:=E_password.text;
   USERNAME:=L_name.Caption;
   if (E_id.Text='') or (L_name.Caption='未知用户') then        //用户名为空
   begin
      messagedlg(Errormsg0002+'0002+0003',mterror,[mbok],0);
      E_id.SetFocus ;
      canclose:=false;
      exit;
   end    //end if
   else                        //用户名非空
   begin
      with query_pass do
      begin
         first;
         while not eof do  //检查用户名与密码
         begin
            if (USERNAME=fieldbyname('USERname').asstring) and
               (S_tempPass=fieldbyname('keypass').asstring) then
            begin
               USERRIGHTSNAME:=fieldbyname('rightsname').AsString ;
               USERRIGHTS:=fieldbyname('rights').AsString ;
               break;
            end;
            next;
         end; //end while
         if eof then    //用户名与密码不符
         begin
            inc(I_logo);
            if I_logo>=3 then
            begin
               messagedlg('您已尝试超过 3 次,系统将停止运行!',mterror,[mbok],0);
               query_pass.Close;
               query_pass.Free;
               application.Terminate ;
            end
            else
            begin
               messagedlg('用户名与密码不符,请检查后重新输入。'+#13+#13
                  +'你还有 '+inttostr(3-I_logo)+' 次机会!',mterror,[mbok],0);
               e_password.SetFocus ;
               e_password.SelectAll ;
               canclose:=false;
               exit;
            end;
         end; //end if
      end; //end with
   end; //end else if;
   frm_main.StatusBar_main.Panels.Items[3].Text:='操作员:【'+USERNAME+'】 权限:〖'+USERRIGHTSNAME+'〗';
   frm_message.Show ;
   frm_message.Memo_message.Lines.Append(datetimetostr(now)+':'+USERNAME+' - 登录');
   query_pass.Free ;
   canclose:=true;
end;

procedure TFrm_Logo.OKBtnClick(Sender: TObject);
begin
  inherited;
   b_halt:=false;
   self.Close ;
end;

procedure TFrm_Logo.FormCreate(Sender: TObject);
var
   reg:TRegistry;
begin
  inherited;
   self.Caption :=application.Title + ' - ';
   self.Caption :=self.Caption +'用户登录';
   I_logo:=0;
   query_pass.DatabaseName :=HWSHOPDATA;
   B_halt:=true;
   reg:=TRegistry.Create;
   Reg.RootKey:=HKEY_CURRENT_USER;
   with query_pass do
   begin
      sql.text:='SELECT Systemuser.ID, Systemuser.NAME USERNAME, Systemuser.KEYPASS,'
               +' Systemrights.NAME RIGHTSNAME, Systemrights.RIGHTS RIGHTS FROM Systemuser '
               +' INNER JOIN Systemrights ON  (Systemuser.RIGHTS = Systemrights.NAME)'
               +' ORDER BY Systemuser.ID';
      try
         open;
      except
         if frm_face.Showing  then
               frm_face.Destroy ;
         messagedlg('数据库打开错误,可能指定的系统数据库文件不存在!'+#13+#13
                     +'系统将终止运行,请重新尝试打开本程序。'
                     +#13+#13+'如果依然出现本信息,请与程序供应商联系。',mtError,[mbok],0);
         close;
         try
            reg.DeleteKey(S_RegTree);
         finally
            reg.CloseKey ;
            reg.free;
         end;
         application.Terminate;
      end;
   end;
end;

procedure TFrm_Logo.E_PasswordKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if key=27 then
   begin
      cancelbtnclick(sender);
      exit;
   end;
   if key=13 then okbtn.OnClick(self);
end;

procedure TFrm_Logo.FormShow(Sender: TObject);
begin
  inherited;
  E_ID.SetFocus ;
end;

procedure TFrm_Logo.E_IDChange(Sender: TObject);
begin
  inherited;
   with query_pass do
   begin
      first;
      while not eof do
      begin
         if E_id.Text =fieldbyname('ID').AsString then
         begin
            L_name.Caption :=fieldbyname('USERName').AsString ;
            exit;
         end
         else
            L_name.Caption :='未知用户';
         next;
      end;
   end;

end;

procedure TFrm_Logo.E_IDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if key=27 then
   begin
      cancelbtnclick(sender);
      exit;
   end;
   if (key=13) or (key=40) then { 判断是按执行键}
   Begin 
      key:=0;
      perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
   end;
end;

end.

⌨️ 快捷键说明

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