Aplikace MainFormof a Delphi je formulář (okno), který je první vytvořený v hlavním těle aplikace. Pokud potřebujete implementovat nějaký druh oprávnění pro vaši aplikaci Delphi, možná budete chtít zobrazit dialogové okno pro přihlášení / heslo před vytvořením a zobrazením hlavního formuláře uživateli. Stručně řečeno, myšlenkou je vytvořit, zobrazit a zničit dialog "přihlášení" před vytvořením hlavního formuláře.
Delphi MainForm
Po vytvoření nového projektu Delphi se "Form1" automaticky stane hodnotou vlastnosti MainForm (globální) aplikace objekt). Chcete-li vlastnost MainForm přiřadit jiný formulář, použijte stránku Formuláře Projekt> Možnosti dialogové okno v době návrhu. Po zavření hlavního formuláře se aplikace ukončí.
Dialog pro přihlášení / heslo
Začněme vytvořením hlavní formy aplikace. Vytvořte nový projekt Delphi obsahující jeden formulář. Tato forma je záměrně hlavní formou.
Pokud změníte název formuláře na "TMainForm" a jednotku uložíte jako "main.pas", zdrojový kód projektu vypadá takto (projekt byl uložen jako „PasswordApp“):
program PasswordApp;
použití
Formuláře,
hlavní v 'main.pas' {MainForm};
{$ R * .res}
začít
Aplikace. Inicializovat;
Aplikace. CreateForm (TMainForm, MainForm);
Aplikace. Běh;
konec.
Nyní do projektu přidejte druhý formulář. Podle návrhu bude druhý přidaný formulář uveden v seznamu „Automatické vytváření formulářů“ v dialogu Možnosti projektu.
Pojmenujte druhý formulář „TLoginForm“ a odeberte jej ze seznamu „Automatické vytváření formulářů“. Uložte jednotku jako „login.pas“.
Přidejte do formuláře Label, Edit a Button, následovaný a metoda třídy vytvořit, zobrazit a zavřít dialogové okno přihlášení / hesla. Metoda "Execute" vrací true, pokud uživatel do pole pro heslo zadal správný text.
Zde je plný zdrojový kód:
jednotka přihlásit se;
rozhraní
použití
Windows, Zprávy, SysUtils, Varianty, Třídy,
Grafika, ovládací prvky, formuláře, dialogy, StdCtrls;
typ
TLoginForm = třída(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedura LogInButtonClick (Sender: TObject);
funkce veřejné třídy Provedení: boolean;konec;
implementace{$ R * .dfm}
funkce třídy TLoginForm. Provedení: boolean;začít s TLoginForm. Vytvořit(nula) dotry
Výsledek: = ShowModal = mrOk;
Konečně
Volný, uvolnit;
konec; konec;
postup TLoginForm. LogInButtonClick (Sender: TObject); beginif passwordEdit. Text = 'delphi' pak
ModalResult: = mrOK
jiný
ModalResult: = mrAbort;
konec;
konec.
Metoda Execute dynamicky vytváří instance TLoginForm a zobrazí ji pomocí ShowModal metoda. ShowModal se nevrací, dokud se formulář nezavře. Po uzavření formuláře vrátí hodnotu ModalResult vlastnictví.
Obslužný program události OnClick "LogInButton" přiřadí "mrOk" k vlastnosti ModalResult, pokud uživatel zadal správné heslo (což je "delphi" ve výše uvedeném příkladu). Pokud uživatel zadal nesprávné heslo, ModalResult je nastaven na „mrAbort“ (může to být cokoli kromě „mrNone“).
Nastavení hodnoty vlastnosti ModalResult uzavře formulář. Execute vrátí true, pokud se ModalResult rovná "mrOk" (pokud uživatel zadal správné heslo).
Nevytvářejte MainForm před přihlášením
Nyní se musíte ujistit, že hlavní formulář není vytvořen, pokud uživatel neposkytl správné heslo.
Zde by měl vypadat zdrojový kód projektu:
program PasswordApp;
použití
Formuláře,
main in 'main.pas' {MainForm},
login in 'login.pas' {LoginForm};
{$ R * .res}
začátek TLoginForm. Vykonat thenbegin
Aplikace. Inicializovat;
Aplikace. CreateForm (TMainForm, MainForm);
Aplikace. Běh;
endelsebegin
Aplikace. MessageBox ('Nemáte oprávnění k používání aplikace. Heslo je „delphi“. ',' Delphi aplikace chráněná heslem ');
konec; konec.
Poznámka: použití Jestliže pak jinak blok k určení, zda má být vytvořen hlavní formulář. Pokud "Execute" vrátí false, MainForm není vytvořen a aplikace se ukončí bez spuštění.