Il form principale di un'applicazione Delphi è un modulo (finestra) che è il primo creato nel corpo principale dell'applicazione. Se devi implementare un tipo di autorizzazione per la tua applicazione Delphi, potresti voler visualizzare una finestra di login / password prima che il modulo principale venga creato e visualizzato all'utente. In breve, l'idea è quella di creare, visualizzare e distruggere la finestra di dialogo "login" prima di creare il modulo principale.
Il modulo principale di Delphi
Quando viene creato un nuovo progetto Delphi, "Form1" diventa automaticamente il valore della proprietà MainForm (del globale Applicazione oggetto). Per assegnare un modulo diverso alla proprietà MainForm, utilizzare la pagina Moduli di Progetto> Opzioni finestra di dialogo in fase di progettazione. Alla chiusura del modulo principale, l'applicazione termina.
Finestra di accesso / password
Cominciamo creando il modulo principale dell'applicazione. Crea un nuovo progetto Delphi contenente un modulo. Questo modulo è, in base alla progettazione, il modulo principale.
Se si modifica il nome del modulo in "TMainForm" e si salva l'unità come "main.pas", il file codice sorgente del progetto assomiglia a questo (il progetto è stato salvato come "PasswordApp"):
programma PasswordApp;
usi
Le forme,
principale nel 'main.pas' {MainForm};
{$ R * .res}
inizio
Applicazione. Inizializzare;
Applicazione. CreateForm (TMainForm, MainForm);
Applicazione. Correre;
fine.
Ora aggiungi un secondo modulo al progetto. In base alla progettazione, il secondo modulo aggiunto viene elencato nell'elenco "Crea automaticamente moduli" nella finestra di dialogo Opzioni progetto.
Denominare il secondo modulo "TLoginForm" e rimuoverlo dall'elenco "Creazione automatica dei moduli". Salvare l'unità come "login.pas".
Aggiungi un'etichetta, una modifica e un pulsante nel modulo, seguito da un metodo di classe per creare, mostrare e chiudere la finestra di dialogo login / password. Il metodo "Esegui" restituisce true se l'utente ha immesso il testo corretto nella casella della password.
Ecco il codice sorgente completo:
unità accesso;
interfaccia
usi
Windows, Messaggi, SysUtils, Varianti, Classi,
Grafica, controlli, moduli, finestre di dialogo, StdCtrls;
genere
TLoginForm = classe(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedura LogInButtonClick (Sender: TObject);
funzione publicclass Eseguire: booleano;fine;
implementazione{$ R * .dfm}
funzione di classe TLoginForm. Eseguire: booleano;iniziare con TLoginForm. Creare(zero) dotry
Risultato: = ShowModal = mrOk;
infine
Gratuito;
fine; fine;
procedura TLoginForm. LogInButtonClick (Sender: TObject); beginif passwordEdit. Testo = 'delphi' poi
ModalResult: = mrOK
altro
ModalResult: = mrAbort;
fine;
fine.
Il metodo Execute crea dinamicamente un'istanza di TLoginForm e la visualizza usando il ShowModal metodo. ShowModal non ritorna fino alla chiusura del modulo. Quando il modulo si chiude, restituisce il valore di ModalResult proprietà.
Il gestore di eventi "LogInButton" OnClick assegna "mrOk" alla proprietà ModalResult se l'utente ha immesso la password corretta (che è "delphi" nell'esempio precedente). Se l'utente ha fornito una password errata, ModalResult è impostato su "mrAbort" (può essere qualsiasi cosa tranne "mrNone").
L'impostazione di un valore sulla proprietà ModalResult chiude il modulo. Execute restituisce true se ModalResult è uguale a "mrOk" (se l'utente ha immesso la password corretta).
Non creare MainForm prima dell'accesso
Ora devi solo assicurarti che il modulo principale non venga creato se l'utente non è riuscito a fornire la password corretta.
Ecco come dovrebbe apparire il codice sorgente del progetto:
programma PasswordApp;
usi
Le forme,
main in 'main.pas' {MainForm},
accedi in 'login.pas' {LoginForm};
{$ R * .res}
beginif TLoginForm. Eseguire thenbegin
Applicazione. Inizializzare;
Applicazione. CreateForm (TMainForm, MainForm);
Applicazione. Correre;
endelsebegin
Applicazione. MessageBox ('Non sei autorizzato a utilizzare l'applicazione. La password è "delphi". ',' Applicazione Delphi protetta da password ');
fine; fine.
Nota l'uso di se poi altro blocco per determinare se il modulo principale deve essere creato. Se "Execute" restituisce false, MainForm non viene creato e l'applicazione termina senza avviarsi.