Delphi 사용자 로그인 창 프레임

3482 단어 Delphi
몇몇 초보자들이 CSDN에 로그인 창을 어떻게 쓰는지 물어보는 것을 자주 보았고 N여명form1도 보았다.show/form1.create/...에서 form2.쇼 같은 거.도저히 못 보겠어.이런 문법은 정말 좋지 않으니 자신이 이해하는 로그인 프레임워크를 써라.신인을 좀 이끌어줬으면 좋겠어요. (오도하지 마세요!)
1. 로그인 창은 어디에서 호출합니까?
프로젝트 파일에 splash 창이 표시되고 불러올 자원, 창이 불러온 후에 Application이 표시되는 것이 좋습니다.Run 전에 사용자가 로그인합니다.이때 사용할 수 있는 데이터 연결이 구축되어 로그인하면 시스템에 들어갈 수 있다.
2. 로그인 창을 어떻게 호출합니까?
내가 말했다: 로그인 창 단원에 함수를 제공하십시오. 예를 들어 Login (): Boolean.이렇게 하면 도착할 곳에서 LoginF를 직접 호출합니다.Login () 은 로그인 창을 호출하고 표준 논리를 사용할 수 있습니다.어쨌든, 당신의 로그인 창은 시스템에서 적어도 두 군데가 필요합니다. (시작할 때, 다시 로그인할 때)


//      

// copyright(c) hydonlee,        

program KBS;



uses

  Forms,

  Windows,

  MainF in 'MainF.pas' {frmMain},

  SplashF in 'SplashF.pas' {frmSplash},

  mainDM in 'mainDM.pas' {dmMain: TDataModule},

  LoginF in 'LoginF.pas' {frmLogin};



{$R *.RES}



var

  frmMain: TfrmMain;

  dmMain: TdmMain;

begin

  Application.Initialize;

  //    

  SplashF.Show;

  try

    //       

    Application.CreateForm(TdmMain, dmMain);

    Application.CreateForm(TfrmMain, frmMain);

    //...  

  finally

    SplashF.Close;

  end;



  if LoginF.Login() then  //      :    ,   !

    Application.Run;

end.


3. 로그인 창은 어떻게 씁니까?
나는 이것이 비교적 간단하니 직접 코드를 붙여라.모르는 거 있으면 다시 얘기해.
unit LoginF;

// copyright(c) hydonlee,        



interface



uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  ExtCtrls, StdCtrls, Buttons;



type

  TfrmLogin = class(TForm)

    pnl1: TPanel;

    edUserName: TEdit;

    lblUserName: TLabel;

    edPasswd: TEdit;

    lblPasswd: TLabel;

    btnOK: TBitBtn;

    btnCancel: TBitBtn;

    procedure FormCreate(Sender: TObject);

    procedure btnOKClick(Sender: TObject);

  private

    FTryTimes: Integer;

    function CheckUserInfo(AUserName, APassword: string): Boolean;

  public

  end;



function Login: Boolean;  //    



implementation



{$R *.DFM}



function Login: Boolean;

begin

  //        

  with TfrmLogin.Create(nil) do

  begin

    //    OK         

    Result := ShowModal() = mrOk;

    Free;

  end;

end;



function TfrmLogin.CheckUserInfo(AUserName, APassword: string): Boolean;

begin

  //     ,          

  Result := (AUserName = 'lihd' ) and (APassword = 'P@ssw0rd');

end;



procedure TfrmLogin.FormCreate(Sender: TObject);

begin

  //       ,    0

  FTryTimes := 0;

end;



procedure TfrmLogin.btnOKClick(Sender: TObject);

begin

  Inc(FTryTimes); //        + 1

  

  if CheckUserInfo(edUserName.Text, edPasswd.Text) then

  begin

    //      ,  OK

    Self.ModalResult := mrOk;

  end else

  begin

    if (FTryTimes > 2) then

    begin

      MessageBox(self.Handle, '       3 ,        。', '  ', MB_OK + MB_ICONERROR);

      Self.ModalResult := mrCancel;

      Exit;

    end;



    //   ,  

    MessageBox(self.Handle, '         ,     !', '  ', MB_OK + MB_ICONERROR);

    edUserName.SetFocus();

    edUserName.SelectAll();

  end;    

end;



end.


마지막으로 한마디만 잔소리: 함수와 컨트롤을 잘 명명해야 해!한편form1/form2/...edit1/edit2/...주석을 많이 쓰지 마세요!코드의 축소는 규칙이 있어야 한다.
초보자에게는 Delphi 플러그인 두 개를 추천합니다: CnPack(플러그인 팩, 강함!)DelForEx(코드 포맷 플러그인) - 본 사이트에서 다운로드copyright(c)hydonlee, 전재는 주소를 밝혀 주십시오

좋은 웹페이지 즐겨찾기