MainFormof a Delphi-applikasjonen er et skjema (vindu) som er det første som opprettes i hoveddelen av applikasjonen. Hvis du trenger å implementere en slags autorisasjon for Delphi-applikasjonen, kan det være lurt å vise en innloggings- / passorddialog før hovedskjemaet opprettes og vises for brukeren. Kort sagt, ideen er å opprette, vise og ødelegge dialogboksen "innlogging" før du oppretter hovedskjemaet.
The Delphi MainForm
Når et nytt Delphi-prosjekt opprettes, blir "Form1" automatisk verdien til MainForm-egenskapen (av det globale applikasjon gjenstand). Hvis du vil tilordne et annet skjema til MainForm-egenskapen, bruker du Skjema-siden til Prosjekt> Alternativer dialogboks på designtid. Når hovedskjemaet lukkes, avsluttes applikasjonen.
Innloggings- / passorddialog
La oss starte med å lage hovedformen for applikasjonen. Lag et nytt Delphi-prosjekt som inneholder en form. Denne formen er, etter design, hovedformen.
Hvis du endrer navnet på skjemaet til "TMainForm" og lagrer enheten som "main.pas", vil the
prosjektets kildekode ser slik ut (prosjektet ble lagret som "PasswordApp"):program PasswordApp;
bruker
former,
hoved- i 'main.pas' {MainForm};
{$ R * .res}
begynne
Applikasjon. Initial;
Applikasjon. CreateForm (TMainForm, MainForm);
Applikasjon. Løpe;
slutt.
Nå kan du legge til et nytt skjema til prosjektet. Ved design blir den andre skjemaet som er lagt til, oppført i listen "Auto-Create Forms" i dialogboksen Project Options.
Navngi den andre formen "TLoginForm" og fjern den fra listen "Auto-Create Forms". Lagre enheten som "login.pas".
Legg til en etikett, rediger og knapp på skjemaet, etterfulgt av a klassemetode for å opprette, vise og lukke dialogboksen for innlogging / passord. Metoden "Utfør" returnerer sann hvis brukeren har skrevet inn riktig tekst i passordboksen.
Her er den fullstendige kildekoden:
enhet Logg Inn;
grensesnitt
bruker
Windows, meldinger, SysUtils, varianter, klasser,
Grafikk, kontroller, skjemaer, dialoger, StdCtrls;
type
TLoginForm = klasse(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passordEdit: TEdit;
prosedyre LogInButtonClick (avsender: TObject);
publicclass-funksjon Utføre: boolsk;slutt;
gjennomføring{$ R * .dfm}
klassefunksjon TLoginForm. Utføre: boolsk;starte med TLoginForm. Skape(nil) dotry
Resultat: = ShowModal = mrOk;
endelig
Gratis;
slutt; slutt;
fremgangsmåte TLoginForm. LogInButtonClick (avsender: TObject); startif passwordEdit. Tekst = 'delphi' deretter
ModalResult: = mrOK
ellers
ModalResult: = mrAbort;
slutt;
slutt.
Utfør-metoden skaper dynamisk en forekomst av TLoginForm og viser den ved å bruke ShowModal metode. ShowModal kommer ikke tilbake før skjemaet lukkes. Når skjemaet lukkes, returnerer det verdien på ModalResult eiendom.
Hendelsesbehandleren "LogInButton" OnClick tildeler "mrOk" til ModalResult-egenskapen hvis brukeren har tastet inn riktig passord (som er "delphi" i eksemplet ovenfor). Hvis brukeren har oppgitt et galt passord, er ModalResult satt til "mrAbort" (det kan være alt annet enn "mrNone").
Innstilling av en verdi til egenskapen ModalResult lukker skjemaet. Utfør returnerer true hvis ModalResult tilsvarer "mrOk" (hvis brukeren har tastet inn riktig passord).
Ikke opprett MainForm før du logger inn
Du trenger bare å sørge for at hovedskjemaet ikke opprettes hvis brukeren ikke klarte å oppgi riktig passord.
Slik ser prosjektets kildekode ut:
program PasswordApp;
bruker
former,
main i 'main.pas' {MainForm},
logg inn i 'login.pas' {LoginForm};
{$ R * .res}
beginif TLoginForm. Henrette thenbegin
Applikasjon. Initial;
Applikasjon. CreateForm (TMainForm, MainForm);
Applikasjon. Løpe;
endelsebegin
Applikasjon. MessageBox ('Du har ikke autorisasjon til å bruke applikasjonen. Passordet er "delphi". ',' Passordbeskyttet Delphi-program ');
slutt; slutt.
Legg merke til bruken av om så ellers blokker for å bestemme om hovedformen skal opprettes. Hvis "Utfør" returnerer usant, opprettes ikke MainForm og applikasjonen avsluttes uten å starte.