Das Splash laden und schließen
Ab hier ist der Vorgang wieder für beide Methoden identisch. In das Splash-Formular sollte jetzt noch das OnClose-Ereignis behandelt werden. Damit wir uns nicht um die Resourcen und den Speicherverbrauch sorgen müssen, reichen folgende Zeilen.
Delphi-Quellcode:
procedure TfrmSplash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frmSplash := nil;
end;
Damit wird dem Formular mitgeteilt, daß es sich selbst zerstören soll. Außerdem setzen wir noch die globale Formvariable wieder auf nil (just in case...).
Die Anwendung selbst
Wenn Ihr jetzt mal das Code-Fenster der Anwendung ladet, dann seht ihr am Ende folgenden Code
Code:
begin
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
[color=#0000FF]Application.CreateForm(TfrmSplash, frmSplash);[/color]
Application.Run;
end.
Die blau dargestellte Zeile ist unter Umständen nicht vorhanden. Das hängt von Euren Einstellungen ab. Sollte diese da sein, einfach löschen!
Genug der Vorworte. Lasst es uns tun. Hier die Theorie, unten die Implementierung. Wir müssen dazu den Startablauf unseres Programmes ein wenig manipulieren. Als erstes müssen wir das Splash-Form erstellen, aber so, daß die Anwendung dieses nicht als Hauptformular erkennt. Ansonsten würde die Anwendung sich schließen, sobald das Splash-Form freigegeben wird
Anschließend müssen wir das Splash-Form dazu bringen sich darzustellen und es "zwingen" sich neu zu zeichnen, ansonsten wird es wohl nur ein graues Rechteck zu sehen geben.
Jetzt wird die Anwedung gestartet und sämtliche Formulare und Datenmodule geladen. Abschließend setzen wir die Eigenschaft
frmSplash.InitializationDone auf
True und überlassen die Anwendung dem Benutzer.
Delphi-Quellcode:
begin
frmSplash := TfrmSplash.Create(Application);
try
frmSplash.Show;
frmSplash.Refresh;
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
// (1)
// weitere Formulare und Datenmodule hier her verschieben (siehe 2)
finally
frmSplash.InitializationDone := True;
end;
// (2)
// Standardmäßig erstellte Formulare wird Delphi hier eintragen
// nach (1) verschieben !!!
Application.Run;
end.
Fertig!
...
...