Bitte warten Sie, während die Anwendung startet...
Um dieses Verhalten zu erreichen, müssen wir zwei Dinge tun. Erstens, das Splash-Formular muss "wissen", wann alle Vorbereitungen zum Start getroffen wurden, und zweitens, das Splash-Formular muss "wissen", wann die drei Sekunden abgelaufen sind.
Punkt 1
Dazu legen wir einfach eine Eigenschaft an, welche den Typ Boolean hat und den Status der Anwedung speichert. Wenn der Status geändert wird, versuchen wir das Splash-Form zu schließen.
Delphi-Quellcode:
type
TfrmSplash = class(TForm)
...
private
{ Private declarations }
FInitializationDone: Boolean;
procedure SetInitializationDone(const Value: Boolean);
...
public
{ Public declarations }
property InitializationDone: Boolean read FInitializationDone write SetInitializationDone;
...
end;
procedure TfrmSplash.SetInitializationDone(const Value: Boolean);
begin
FInitializationDone := Value;
Close;
end;
Ausserdem fügen wir noch einen TTimer auf das Formular ein, setzen das Intervall auf
3000 (3 Sekunden) und stellen sicher, daß Enabled auf
True gesetzt ist. Im OnTimer Ereignis disablen wir den Timer (es müssen ja nur die ersten 3 Sekunden abgelaufen sein
) und versuchen wiederum das Form zu schließen.
Delphi-Quellcode:
procedure TfrmSplash.tmrMinTimingTimer(Sender: TObject);
begin
tmrMinTiming.Enabled := False;
Close;
end;
Jetzt zum "Trick"
Wann kann der Splash Screen nun wirklich geschlossen werden? Eigentlich doch nur dann, wenn die Anwendung geladen wurde
und wenn die drei Sekunden abgelaufen sind. Das lässt sich recht einfach überprüfen. Ersteres daran, das die Variabe
FInitializationDone den Wert
True hat und letzteres daran, daß der Timer disabled ist. Dazu einfach folgenden Code in das OnClose
Query-Ereignis schreiben.
Delphi-Quellcode:
procedure TfrmSplash.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose := (not tmrMinTiming.Enabled) and FInitializationDone;
end;
Wie es weiter geht, steht im übernächsten Abschnitt.
...
...