2012-08-01

【Delphi】進入主程式前顯示密碼登入視窗

開啟一個空白的 projectDelphi 會自動幫您開啟一個空白的 form,更改 namefrmMain, 存成 mainform.pas,這個 form 就做為我們的主視窗.

再開啟第二個 formname 改為 frmLogin,存成 loginform.pas.

此時點功能表的 Project → View Source,會看到程式碼如下:


  1.  
  2. program Project1;
  3.  
  4. uses
  5. Forms,
  6. mainform in 'mainform.pas' {frmMain},
  7. loginform in 'loginform.pas' {frmLogin};
  8.  
  9. {$R *.res}
  10.  
  11. begin
  12. Application.Initialize;
  13. Application.CreateForm(TfrmMain, frmMain);
  14. Application.CreateForm(TfrmLogin, frmLogin); // 直接刪除這一行, 意即程式啟動時, 不要自動產生 frmLogin
  15. Application.Run;
  16. end.
  17.  


TfrmLoginpublic 加入

class function Execute : boolean;

然後在 implementation 加入對應的程式碼, 還有輸入密碼後按下 button1 檢查密碼是否輸入正確的程式碼, loginform.pas 的程式碼如下:


  1.  
  2. unit loginform;
  3.  
  4. interface
  5.  
  6. uses
  7. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8. Dialogs, StdCtrls;
  9.  
  10. type
  11. TfrmLogin = class(TForm)
  12. Edit1: TEdit;
  13. Label1: TLabel;
  14. Button1: TButton;
  15. procedure Button1Click(Sender: TObject);
  16. private
  17. { Private declarations }
  18. public
  19. { Public declarations }
  20. class function Execute : boolean; // 加入這一行
  21. end;
  22.  
  23. var
  24. frmLogin: TfrmLogin;
  25.  
  26. implementation
  27.  
  28. {$R *.dfm}
  29.  
  30. // 加入這一段
  31. class function TfrmLogin.Execute: boolean;
  32. begin
  33. with TfrmLogin.Create(nil) do
  34. try
  35. Result := ShowModal = mrOk;
  36. finally
  37. Free;
  38. end;
  39. end;
  40.  
  41. procedure TfrmLogin.Button1Click(Sender: TObject);
  42. begin
  43. if Edit1.Text = 'admin' then
  44. ModalResult := mrOK
  45. else
  46. ModalResult := mrAbort;
  47. end;
  48. end.
  49.  

再回頭修改 projectsource 如下:


  1.  
  2. program Project1;
  3.  
  4. uses
  5. Forms,
  6. mainform in 'mainform.pas' {frmMain},
  7. loginform in 'loginform.pas' {frmLogin};
  8.  
  9. {$R *.res}
  10.  
  11. begin
  12. if TfrmLogin.Execute then
  13. begin
  14. Application.Initialize;
  15. Application.CreateForm(TfrmMain, frmMain);
  16. Application.Run;
  17. end
  18. else
  19. begin
  20. Application.MessageBox('密碼錯誤! 正確的密碼是 admin', '密碼錯誤');
  21. end;
  22. end.
  23.  

沒有留言:

張貼留言