?? loginfm.pas
字號:
unit loginfm;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, Db, DBTables, Dialogs, Security;
type
TSecurityLoginDialog = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
EditPassword: TEdit;
LabelTitle: TLabel;
User: TComboBox;
procedure FormCreate(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
InputTimes : Integer;
FUserID, FUserName : String;
function ComparePassword:Boolean;
procedure DoParserIDName;
function GetUserID:String;
function GetUserName:String;
public
NotOK : Boolean;
InputLimits : Integer;
property InputUserID :String read GetUserID;
property InputUserName:String read GetUserName;
end;
var
SecurityLoginDialog: TSecurityLoginDialog;
implementation
{$R *.DFM}
function TSecurityLoginDialog.ComparePassword:Boolean;
var
mID, mPass:String;
begin
DoParserIDName;
Result := (Owner as TSecurity).ValidatePassword(FUserID, EditPassword.Text);
end;
procedure TSecurityLoginDialog.FormCreate(Sender: TObject);
begin
NotOK := True;
InputTimes := 0;
end;
procedure TSecurityLoginDialog.OKBtnClick(Sender: TObject);
begin
Inc(InputTimes);
if ComparePassword then
begin
Close;
ModalResult := mrOk;
end
else
begin
EditPassword.Text := '';
MessageDlg('Password error, try again',mtError,[mbOk],0);
EditPassword.SetFocus;
if InputTimes=InputLimits then Close;
end;
end;
procedure TSecurityLoginDialog.FormActivate(Sender: TObject);
begin
if User.Items.Count>0 then User.ItemIndex := 0;
EditPassword.SetFocus;
end;
procedure TSecurityLoginDialog.DoParserIDName;
var
I : Integer;
blID, blName : Boolean;
begin
// Parser the User.Text, You can improve it to meet your own needs
// 1. if there '[]' in text, eg. '[001] Ma Jun'
// 2. if there ' '(blank) in text, '001 Ma Jun'
// 3. if none of above, then ID = User.Text
FUserID := '';
FUserName := '';
blID := False;
blName := False;
if (Pos(']',User.Text)>1) or (Pos(')',User.Text)>1) then
begin
// {
for I:=1 to length(User.Text) do
begin
if (User.Text[I]='[') or (User.Text[I]='(') then
begin
blID:=True;
continue;
end;
if (User.Text[I]=']') or (User.Text[I]=')') then
begin
blID:=False;
blName := True;
continue;
end;
if blID then FUserID := FUserID +User.Text[I];
if blName then FUserName := FUserName+User.Text[I];
end;
// }
end
else
begin
if Pos(' ',User.Text)>1 then
begin
I := Pos(' ',User.Text);
FUserID := Copy(User.Text,1,I);
FUserName:= Copy(User.Text,I+1, Length(User.Text));
end
else FUserID := User.Text;
end;
FUserID := TrimLeft(FUserID);
FUserName := TrimLeft(FUserName);
end;
function TSecurityLoginDialog.GetUserID:String;
begin
DoParserIDName;
Result := FUserID;
end;
function TSecurityLoginDialog.GetUserName:String;
begin
DoParserIDName;
Result := FUserName;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -