📄 login.pas
字号:
unit Login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons, Registry, DB, RSGLCommon, ADODB;
type
TLoginForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
bbtnOk: TBitBtn;
bbtnCancel: TBitBtn;
edtPassword: TEdit;
cbUserName: TComboBox;
adoq: TADOQuery;
adocLogin: TADOConnection;
procedure bbtnOkClick(Sender: TObject);
procedure bbtnCancelClick(Sender: TObject);
procedure cbUserNameExit(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FPassword: array of string;
function InitUserList: boolean;
public
{ Public declarations }
destructor destroy;override;
end;
implementation
{$R *.DFM}
procedure TLoginForm.FormCreate(Sender: TObject);
var
l_File: string;
begin
l_File := DataPath + conRSGLDataFile;
if not FileExists(l_File) then
begin
ShowMessage('文件不存在!无法打开数据库!');
Exit;
end;
with adocLogin do
begin
ConnectionString := CNT_ConnectString;
ConnectionString := Format(ConnectionString, [l_File]);
Connected := True;
end;
InitUserList;
end;
function TLoginForm.InitUserList:boolean;
begin
Result := False;
cbUserName.Items.Clear;
with adoq do
begin
Sql.Text := 'Select * from Login';
Open;
First;
while not Eof do
begin
cbUserName.Items.Add(FieldByName('UserName').AsString);
SetLength(FPassword, Length(FPassword) + 1);
FPassWord[High(FPassWord)] := FieldByName('Password').AsString;
Next;
end;
Close;
end;
result := True;
cbUserName.ItemIndex := 0;
edtPassword.Text := '';
end;
procedure TLoginForm.bbtnOkClick(Sender: TObject);
begin
if cbUserName.ItemIndex = -1 then
begin
ShowMessage('不存在的用户!');
cbUserName.SetFocus;
cbUserName.SelectAll;
end
else begin
if SameText(edtPassword.Text, FPassword[cbUserName.ItemIndex]) then
begin
ModalResult := mrOk;
end
else
ModalResult := mrCancel;
end;
end;
procedure TLoginForm.bbtnCancelClick(Sender: TObject);
begin
PostQuitMessage(0);
end;
destructor TLoginForm.destroy;
begin
if adocLogin.Connected then adocLogin.Close;
FPassWord := nil;
inherited;
end;
procedure TLoginForm.cbUserNameExit(Sender: TObject);
var
Positon:integer;
begin
Positon := cbUserName.Items.IndexOf(cbUserName.Text);
if Positon > -1 then
cbUserName.ItemIndex := Positon
else
if ActiveControl = EdtPassWord then
begin
ShowMessage('不存在的用户!');
cbUserName.SetFocus;
cbUserName.SelectAll;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -