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

📄 login.pas

📁 物流管理系统是一个典型的数据库应用程序
💻 PAS
字号:

unit login;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, frame, StdCtrls, ComCtrls, ExtCtrls, Buttons, ImgList;

type
  Tf_login = class(Tf_frame)
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    List: TListView;
    Label1: TLabel;
    Operatorname: TLabel;
    Label3: TLabel;
    Level: TLabel;
    Label5: TLabel;
    Entry: TBitBtn;
    Cancel: TBitBtn;
    Images: TImageList;
    Panel2: TPanel;
    Image1: TImage;
    Password: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure ListClick(Sender: TObject);
    procedure CancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EntryClick(Sender: TObject);
    procedure PasswordKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    Procedure FindIcoFiles(FileName: Pchar);//遍历指定目录下的ICO文件
    { Public declarations }
  end;

var
  f_login: Tf_login;
  isterminate: Boolean = False;//防止未经登录进入系统
implementation
  uses data,main;
{$R *.dfm}
//将应用程序目录下Icons目录下的Ico文件添加到TImageList组件中
procedure Tf_login.FindIcoFiles(FileName: Pchar);
var
  Struct: _WIN32_FIND_DATA;
  b: longint;
  temp: String;
  Icon: TIcon;
begin
  Try
    Icon := TICon.Create;
  temp :=  filename;
  b :=  FindFirstFile(Pchar(Filename +'\*.*'),Struct);
  if (Trim(Struct.cFileName)<>'.')and(Trim(Struct.cFileName)<>'..')and(Trim(Struct.cFileName)<>'')then
  begin
    if ExtractFileExt(Trim(Struct.cFileName))='.ico' then
    begin
      Icon.LoadFromFile(Temp+'\'+Trim(Struct.cFileName));
      Images.InsertIcon(0,Icon);
    end;
  end;
  while FindNextFile(b,Struct) = True do
  begin
    if (Trim(Struct.cFileName)<>'.')and(Trim(Struct.cFileName)<>'..')and(Trim(Struct.cFileName)<>'') then
    begin
      if ExtractFileExt(Trim(Struct.cFileName))='.ico' then
      begin
        Icon.LoadFromFile(Temp+'\'+Trim(Struct.cFileName));
        Images.InsertIcon(0,Icon);
      end;
    end;
  end;
  Finally
    Icon.Free;
  End;
end;
//在窗体创建时向列表视图中添加用户
procedure Tf_login.FormCreate(Sender: TObject);
var
  ListItem: TListItem;
  i: Integer;
begin
  inherited;
  FindIcoFiles(Pchar(Extractfilepath(Application.ExeName)+'Icons'));
  With t_data.Query1 do
  begin
    CLose;
    SQL.Clear;
    SQL.Add('select * from tb_operatorinfo');
    Open;
  end;
  if t_data.Query1.RecordCount>0 then
  begin
    i := 0;
    while Not t_data.Query1.Eof do
    begin
      ListItem := List.Items.AddItem(nil);
      if i >Images.Count-1 then
        ListItem.ImageIndex :=  0
      else
        ListItem.ImageIndex := i;
      Inc(i);
      ListItem.Caption := Trim(t_data.Query1.FieldByName('operatorname').AsString);
      t_data.Query1.Next;
    end;
  end;
end;
//处理列表视图的单击事件,将选择的用户及其级别显示在标签中
procedure Tf_login.ListClick(Sender: TObject);
begin
  inherited;
  if List.Selected <>nil then   //如果选中了视图项
  begin
    Operatorname.Caption := Trim(List.Selected.Caption);
    With t_data.Query1 do
    begin
      CLose;
      SQL.Clear;
      SQL.Add('select Level from tb_operatorinfo where operatorname = :operatorname');
      Parameters.ParamByName('operatorname').Value := Trim(List.Selected.Caption);
      Open;
    end;
    Level.Caption := Trim(t_data.Query1.FieldByName('level').AsString);
    Password.SetFocus;
  end
  else
  begin
    Operatorname.Caption := '';
    Level.Caption := '';
  end;
end;

procedure Tf_login.CancelClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure Tf_login.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  if isterminate = False then
    Application.Terminate;
end;
//处理登录按钮的单击事件,验证用户名和密码
procedure Tf_login.EntryClick(Sender: TObject);
begin
  inherited;
  if (Trim(Operatorname.Caption)<>'')and(Trim(Password.Text)<>'')then //判断用户名和密码是否为空
  begin
    With t_data.Query1 do
    begin
      CLose;
      SQL.Clear;
      //根据用户名和密码查询数据
      SQL.Add('select * from tb_operatorinfo where operatorname = :operatorname and password = :password');
      Parameters.ParamByName('operatorname').Value := Trim(Operatorname.Caption);
      Parameters.ParamByName('password').Value := Trim(Password.Text);
      Open;
    end;
    if t_data.Query1.RecordCount>0 then  //如果有数据返回证明用户名和密码正确
    begin
      isterminate := True;
      t_main.Operatorname := Operatorname.Caption;
      t_main.Operatorpass := Trim(Password.Text);
      t_main.Level := Level.Caption;
      t_main.StatusBar1.Panels[Sta_Operatername].Text := t_main.Operatorname;
      t_main.StatusBar1.Panels[Sta_Level].Text := t_main.Level;
      Close;
    end
    else
    begin
      Application.MessageBox('密码不正确,请重新输入!','提示',64);
      Password.SetFocus;
      Password.SelectAll;
    end;
  end;
end;

procedure Tf_login.PasswordKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key = vk_Return then
    if Trim(Password.Text)<>'' then
      Entry.Click;
end;

end.

⌨️ 快捷键说明

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