Il form principaledi 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.
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.
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 codice sorgente del progetto appare così (il progetto è stato salvato come "PasswordApp"):
programma PasswordApp;
usi
Le forme,
principale nel 'main.pas' MainForm;
$ R * .res
inizio
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
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.Execute: boolean;iniziare con TLoginForm.Create (zero) dotry
Risultato: = ShowModal = mrOk;
infine
Gratuito;
end; end;
procedura TLoginForm.LogInButtonClick (Sender: TObject); beginif passwordEdit.Text = '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 sopra). 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).
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.Execute thenbegin
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
endelsebegin
Application.MessageBox ('Non sei autorizzato a utilizzare l'applicazione. La password è "delphi".', 'Applicazione Delphi protetta da password');
end; end.
Notare l'utilizzo del blocco if then else per determinare se il modulo principale deve essere creato. Se "Execute" restituisce false, MainForm non viene creato e l'applicazione termina senza avviarsi.