Thema: Delphi Form unload

Einzelnen Beitrag anzeigen

urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#10

Re: Form unload

  Alt 13. Aug 2003, 21:30
Du solltest auf jeden Fall 3 Forms haben:
Form1 (Hauptformular der Anwendung)
Form2 (LoginFormular)
Form3 (Arbeitsfenster)
Form2 und Form3 weist Du im OI visible = false zu.

In den Projektoptionen soll stehen, dass Formulare 1 und 3 automatisch erzeugt werden und Form1 das Hauptfenster ist.

Im Ereignis OnShow der Form1 rufst Du Form2.ShowModal auf.
Dort weist Du (je nach Erfolg des Login) Form2.ModalResult den Wert mrOK oder mrCancel zu, dadurch wird das Fenster geschlossen. (Dazu kann ich nichts genaueres sagen, weil ich nicht weiß, wie Dein Login funktioniert).
Delphi-Quellcode:
var loginForm: TForm;
begin
  loginForm := TForm2.Create(Application);
  if Form2.ShowModal = mrOK
     then
     begin
       Form2.FreeAndNil;
       Form3.Show
     end
     else Form1.Close;
end;
Was passiert?
1. Form1 und Form3 werden erzeugt (d.h. speicher reserviert und der ganze kram. Das siehst Du auch in der 'Projekt'.dpr-Datei vor Application.Run.
2. Form1 (als Hauptformular) wird angezeigt. Dann wird OnShow ausgelöst.
3. In OnShow erzeugst Du eine Instanz des Loginfensters und zeigst es mit ShowModal an. Das heißt, dass das Fenster im Vordergrund bleibt (d.h. man nichts anderes in der Anwendung gleichzeitig machen kann).
Wenn der Loginvorgang erfolgreich war (mrOK), wird Form2 befreit (und ist dann auch nicht mehr im Speicher) und Form3 angezeigt, in der wohl die eigentliche Arbeit des Programms abläuft.
Wenn der Login fehlgeschlagen ist, wird Form1 geschlossen.
Wenn Du das Hauptformular einer Anwendung schließt, wird die Anwendung beendet.

Ich hoffe, das hat es klarer gemacht
MFG
Urs

P.S. Timer oder sowas brauchst Du auf jeden fall nicht.
  Mit Zitat antworten Zitat