Delphi 사용자 로그인 창 프레임
3482 단어 Delphi
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, 전재는 주소를 밝혀 주십시오
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.