Thema: Delphi Tutorial: Splash Screens

Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Tutorial: Splash Screens

  Alt 9. Sep 2003, 13:57
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 OnCloseQuery-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.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat