AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Startbildschirm zeitgesteuert anzeigen

Ein Thema von susi59 · begonnen am 5. Nov 2010
Antwort Antwort
susi59

Registriert seit: 20. Feb 2007
12 Beiträge
 
#1

Startbildschirm zeitgesteuert anzeigen

  Alt 5. Nov 2010, 14:03
Hallo,

ich habe bei meinen Programmen mit Einführungsbildschirm oft das problem, das der wieder ganz schnell weg ist.

In diversen Foren konnte ich keinen Lösugsansatz finden. Deshalb hab ich mich selbst drangemacht.
Das kleine Demo-Programm kann das ganze veranschaulichen.

Die Zeit vom ersten Anzeigen des Splash-Screens bis zum wieder Ausblenden habe ich hier auf 5s gesetzt.
Wie mittels Fortschrittsbalken angezeigt wird, das Formulare geladen sind, dafür gibts ja ausreichend Hinweise.

Ich dachte mir, merke Dir Zeit 1 (z1) als TDateTime, lass nach dem Laden aller Formulare eine Schleife laufen, bis z1+5s = z2
vergangen ist und dann wieder weg mit dem Splash.

Funktioniert im Prinzip auch so, nun nicht ganz so einfach. Das Rechnen mit TDateTime geht ao nicht.

Also habe ich es etwas anders gelöst.

1. SysUtils einbinden für TDatetime.
2. Eine Variable zum auslesen: n:TDateTime.
3. Eine PointerVariable vom Double-Typ,
die auf d gesetzt wird: d:^Double. Von der Größe ( Bytelänge) her sind beide gleich. Dann kann ich den nachkommaanteil
von n ( vor dem Komma=> Tagesangabe, nach dem Komma=> Anteil am 24h - Tag) mittels der Funktion z1:=frac(d^) abtrennen.

4. z1 und z2 für die Zeiten des Anzeigens bzw. des Ausblendenkönnens des Splash-Screens.
5. i:integer, die aber mit der Funktion nix zu tun hat und nur gebraucht wird, den Balken im Screen zu aktualisieren.

Damit ist die Funktion auch schon fast erklärt:

Ich erzeuge das Fenster. Dazu dient Splash:TAboutBox. Die AboutBox selber wird ja als TForm im Programm selbst gebraucht. Ich
brauche also eine zeite Instanz. Die folgenden Anweisungen dienen der Ausblendung des OK-Schalters, des Setzens einer 5s-Maximalläge
des Balkens etc. Also Sachen, die der Veranschaulichung dienen.

Dann wird das Fenster mit Show angezeigt und der Zeitpunkt ermittelt (N:=Now),
Der Zeitanteil in der TDateTime-Variablen n merke ich mir in z1:=frac(d^).

Nach dem alle Formulare geladen sind lasse ich erstmal aich Application.ProcessMessages laufen, ehe
ich in die Warteschleife geht.

Das Wesentliche hier ist das immer wiederkejrende Auslesen der aktuellen Zeit (n:=now).
Wenn die resultierende Zeit z2 größer ist als z1 + 5s, dann wir die Schleife verlassen.
In TDatetime entspricht jede Sekunde dem Bruchteil von 24Stunden: also 1/ ( 24(h) + 60 (min) * 60 (s),
was etwa 0,0000115 entspricht.

Nach Verlassen der Schleife dann nur noch ausblenden des Fensters und Speicher freigeben.

Mit Application.run übernimmt das Hauptprogramm die Regie.


Im Anhang ist die Demo mir den Dateien.
Splash_demo ( Projectdatei), USDMain ( Hauptprogramm), USplash ( Start- und InfoBildschirm).
Angehängte Dateien
Dateityp: rar Splash_Demo.rar (187,5 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz