⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginunit.pas

📁 三层的通用架构
💻 PAS
字号:
unit LoginUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TLoginForm = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Bevel1: TBevel;
    Label3: TLabel;
    procedure Edit3Enter(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
    FNumber: Integer;
    procedure WMNcActivate(var Msg: TMessage); message WM_NCACTIVATE;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    { Public declarations }
    LoginFlag: Boolean;
  end;

var
  LoginForm: TLoginForm;

implementation

uses  MainUnit, ShareUnit;

{$R *.dfm}

procedure TLoginForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := 0;
end;

procedure TLoginForm.WMNcActivate(var Msg: TMessage);
begin
  if not LongBool(Msg.WParam) then
  begin
    Edit2Exit(nil);
    Msg.Result := 1;
  end;
  inherited;
end;

procedure TLoginForm.Edit3Enter(Sender: TObject);
begin
  if Edit2.MaxLength = 0 then
  begin
    Edit2.MaxLength := 16;
    Edit2.Text := TheMainForm.ProcessPassword('Edit2', Edit2.Text, True);
  end;
  Edit2.SetFocus;
  TEdit(Sender).Visible := False;
end;

procedure TLoginForm.Edit2Exit(Sender: TObject);
begin
  Edit3.Visible := True;
  if Edit2.MaxLength = 16 then
  begin
    Edit2.MaxLength := 0;
    Edit2.Text := TheMainForm.ProcessPassword('Edit2', Edit2.Text);
  end;
end;

procedure TLoginForm.FormCreate(Sender: TObject);
begin
  Caption := '登录' + Application.Title;
  Icon.Assign(Application.Icon);
  FNumber := 0;
  LoginFlag := False;
end;

procedure TLoginForm.FormShow(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TLoginForm.Button1Click(Sender: TObject);
var
  TempString: string;
begin
  TempString := Edit2.Text;
  if Edit2.MaxLength = 0 then
    TempString := TheMainForm.ProcessPassword('Edit2', Edit2.Text, True);
  LoginFlag := TheMainForm.Login(Edit1.Text, TempString);
  FNumber := FNumber + 1;
  if LoginFlag or (FNumber = 3) then
    Close
  else begin
    Label3.Caption := '您还有' + IntToStr(3 - FNumber) + '次机会!';
    if not Label3.Visible then
      Label3.Visible := True;
  end;
end;

procedure TLoginForm.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TLoginForm.Edit1Change(Sender: TObject);
begin
  if not Button1.Enabled and (TEdit(Sender).Text <> '') then
    Button1.Enabled := True
  else
    if TEdit(Sender).Text = '' then
      Button1.Enabled := False;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -