📄 logon.pas
字号:
unit logon;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Registry;
const
BACK_SPACE = 8;
REG_LOGIN_INFORMATION ='\Software\Ultimate';
type
TLogonForm = class(TForm)
lblUserID: TLabel;
lblPassword: TLabel;
txtUserID: TEdit;
txtPassword: TEdit;
cmdOK: TButton;
cmdCancel: TButton;
imgLog: TImage;
bvlLine: TBevel;
lblServer: TLabel;
txtServer: TEdit;
lblLoginUser: TLabel;
txtLoginUser: TEdit;
lblLoginPassword: TLabel;
txtLoginPassword: TEdit;
cmdMore: TButton;
procedure FormCreate(Sender: TObject);
procedure cmdMoreClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure txtDigitalValid(Sender: TObject; var Key: Char);
procedure cmdOKClick(Sender: TObject);
private
{ Private declarations }
fbModify:Boolean;
public
{ Public declarations }
fsUser,fsPwd,fsSrv:string;
fiUserID,fiPassword:Integer;
end;
var
LogonForm: TLogonForm;
implementation
{$R *.DFM}
procedure GetRegistryParameters(var sUser,sPwd,sSrv:String);
var
Reg: TRegistry;
begin
sUser:='';
sPwd:='';
sSrv:='';
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(REG_LOGIN_INFORMATION, True) then
begin
sUser:=Reg.ReadString('SQLLoginUser');
sPwd:=Reg.ReadString('SQLLoginPassword');
sSrv:=Reg.ReadString('SQLServer');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure SetRegistryParameters(sUser,sPwd,sSrv:String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(REG_LOGIN_INFORMATION, True) then
begin
Reg.WriteString('SQLLoginUser',sUser);
Reg.WriteString('SQLLoginPassword',sPwd);
Reg.WriteString('SQLServer',sSrv);
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TLogonForm.FormCreate(Sender: TObject);
begin
Height:=130;
fbModify:=False;
GetRegistryParameters(fsUser,fsPwd,fsSrv);
txtLoginUser.text :=fsUser;
txtLoginPassword.text:=fsPwd;
txtServer.text :=fsSrv;
fiUserID:=0;
fiPassword:=0;
end;
procedure TLogonForm.cmdMoreClick(Sender: TObject);
begin
fbModify:=True; //登录信息已修改。
if Height=130 then
begin
Height:=265;
cmdMore.Caption:='简要(&R)<<';
txtServer.Enabled:=True;
txtLoginUser.Enabled:=True;
txtLoginPassword.Enabled:=True;
txtServer.SetFocus;
end
else
begin
Height:=130;
cmdMore.Caption:='详细(&E)>>';
txtServer.Enabled:=False;
txtLoginUser.Enabled:=False;
txtLoginPassword.Enabled:=False;
txtUserID.SetFocus;
end;
Position:=poDesktopCenter;
end;
procedure TLogonForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if fbModify then SetRegistryParameters(fsUser,fsPwd,fsSrv);
Action := caFree;
end;
procedure TLogonForm.txtDigitalValid(Sender: TObject; var Key: Char);
begin
if Ord(Key) = BACK_SPACE then Exit;
if (Key<'0') or (key>'9') then Key:=#0;
end;
procedure TLogonForm.cmdOKClick(Sender: TObject);
begin
ModalResult:=mrOK;
try
if Length(Trim(LogonForm.txtUserID.Text))=0 then
fiUserID:=0
else
fiUserID:=StrToInt(LogonForm.txtUserID.Text);
except
Application.MessageBox('操作员工号输入错误,恢复为默认值。','错误',MB_ICONINFORMATION);
txtUserID.Text:='';
fiUserID:=0;
ModalResult:=mrNone;
end;
try
if Length(Trim(LogonForm.txtPassword.Text))=0 then
fiPassword:=0
else
fiPassword:=StrToInt(LogonForm.txtPassword.Text);
except
Application.MessageBox('操作员口令输入错误,恢复为默认值。','错误',MB_ICONINFORMATION);
txtPassword.Text:='';
fiPassword:=0;
ModalResult:=mrNone;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -