📄 login_unit.~pas
字号:
unit Login_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,Registry;
type
TInfor=class(Tobject)
UserName:String;
Password:String;
end;
type
TLogin_Form = class(TForm)
Label1: TLabel;
UserName_Combox: TComboBox;
Label2: TLabel;
Password_Edit: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Label3: TLabel;
procedure FormDestroy(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Password_EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure UserName_ComboxKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormActivate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
LogCount:Integer;
procedure GetUsers;
public
class function ShowMe:boolean;
procedure SetText(Str:string);
end;
var
Login_Form: TLogin_Form;
implementation
{$R *.dfm}
{ TLogin_Form }
procedure TLogin_Form.GetUsers;
var reg:TRegistry;
VNames:TStrings;
Infor:TInfor;
i:integer;
begin
reg:=TRegistry.Create;
VNames:=TStringList.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\FLy\Login',True);
Reg.GetValueNames(VNames);
if VNames.Count<=0 then
begin
Infor:=TInfor.Create;
Reg.WriteString('管理员','www');
Infor.UserName:='管理员';
Infor.Password:='www';
UserName_Combox.Items.AddObject(infor.username,infor);
end
else
begin
for i:=0 to VNames.Count -1 do
begin
Infor:=TInfor.Create;
infor.UserName:=Vnames.Strings[i];
infor.password:=Reg.ReadString(VNames.Strings[i]);
UserName_Combox.Items.AddObject(Vnames.Strings[i],infor);
end;
end;
reg.CloseKey;
reg.Free;
end;
procedure TLogin_Form.FormDestroy(Sender: TObject);
var i:integer;
begin
for i:=0 to UserName_Combox.Items.Count-1 do
TInfor(UserName_Combox.Items.Objects[i]).Free;
end;
class function TLogin_Form.ShowMe: boolean;
begin
try
Login_Form:=TLogin_Form.Create(Application);
Login_Form.ShowModal;
if Login_FOrm.ModalResult=mrOk then
Result:=True
else
Result:=false;
finally
Login_Form.Free;
login_form:=nil;
end;
end;
procedure TLogin_Form.BitBtn1Click(Sender: TObject);
begin
if Password_Edit.Text=TInfor(UserName_Combox.Items.Objects[UserName_Combox.ItemIndex]).Password then
self.ModalResult:=mrok
else
begin
messagebox(self.handle,'密码错误','',MB_ICONSTOP+MB_OK);
inc(LogCount);
if LogCount>=3 then self.ModalResult:=mrCancel;
end;
end;
procedure TLogin_Form.FormCreate(Sender: TObject);
begin
GetUsers;
UserName_Combox.ItemIndex:=0;
end;
procedure TLogin_Form.Password_EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
BitBtn1Click(nil);
end;
procedure TLogin_Form.UserName_ComboxKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=vk_return then
Password_edit.SetFocus ;
end;
procedure TLogin_Form.FormActivate(Sender: TObject);
begin
password_edit.SetFocus ;
end;
procedure TLogin_Form.SpeedButton1Click(Sender: TObject);
begin
if Password_Edit.Text=TInfor(UserName_Combox.Items.Objects[UserName_Combox.ItemIndex]).Password then
self.ModalResult:=mrok
else
begin
messagebox(self.handle,'密码错误','',MB_ICONSTOP+MB_OK);
inc(LogCount);
if LogCount>=3 then self.ModalResult:=mrCancel;
end;
end;
procedure TLogin_Form.SpeedButton2Click(Sender: TObject);
begin
if application.MessageBox('确实要退出吗?','退出',4)=6 then
application.Terminate;
end;
procedure TLogin_Form.BitBtn2Click(Sender: TObject);
begin
if application.MessageBox('确实要退出吗?','退出',4)=6 then
application.Terminate;
end;
procedure TLogin_Form.SetText(Str:string);
begin
Label3.Caption := Str;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -