📄 login.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 + -