Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Splash wähernd Initialisierung (https://www.delphipraxis.net/136860-splash-waehernd-initialisierung.html)

Opa Knack 9. Jul 2009 01:13


Splash wähernd Initialisierung
 
Hallo,

vorab erst einmal die Bemerkung, dass ich weiß, wie ein Splash erstellt wird. Und ich kenne auch die Suchfunktion :-)

Ich habe ein Programm erstellt, welches über Internet auf eine MySQL-Datenbank zugreift und beim Programmstart eine Übersicht aus den darin enthaltenen Daten erstellt. Dieser Zugriff braucht mitunter seine Zeit, gerade bei Usern, die nur über ISDN verfügen, kann es auch mal ein paar Sekunden länger dauern.

Diese Wartezeit möchte ich nun mit einem Splashscreen "überbrücken", in dem angezeigt wird, was gerade passiert. Es soll also direkt zum Start ein Willkommensfenster erscheinen, welches sich schließt, sobald alle Daten geladen sind und das Programm "einsatzbereit" ist. Leider konnte ich bisher als einzig praktikable Lösung dafür die finden, dass ich das Splash nach einem vordefinierten Zeitraum schließe und zum Hauptprogramm gehe. Das Problem dabei ist klar: Wenn die Datenmenge größer oder aber die Internetanbindung langsamer ist, schließt sich das Splash zu früh, und wenn ich es auf eine dafür angemessene Zeit einstelle, schließt es sich für die schnellen Surfer und diejenigen, die nur wenige Daten übertragen, zu spät.

Deshalb nun die Frage: Wie kann ich das Splash vom Projekt aus öffnen, im Programm selbst aber wieder schließen? Bzw., da diese Frage ein wenig widersinnig ist, besser: Hat jemand eine Lösung für mein Problem? Ich bin für jeden Tipp dankbar.

Vielen Dank
Opa

mirage228 9. Jul 2009 01:18

Re: Splash wähernd Initialisierung
 
Falls Du die ZEOS Komponenten benutzt, kannst Du ja die SQLHourGlass Eigenschaft der ZConnection auf True setzen. Dann würden die Benutzer einen entsprechenden SQL-Wartecursor angezeigt bekommen, falls die SQL Operation noch läuft. Ansonsten kannst Du das Splashscreen ja erst nach dem Holen der Daten schließen...

Viele Grüße

Ralf Kaiser 9. Jul 2009 10:07

Re: Splash wähernd Initialisierung
 
Zitat:

Zitat von Opa Knack
Deshalb nun die Frage: Wie kann ich das Splash vom Projekt aus öffnen, im Programm selbst aber wieder schließen? Bzw., da diese Frage ein wenig widersinnig ist, besser: Hat jemand eine Lösung für mein Problem? Ich bin für jeden Tipp dankbar.

Wo genau ist jetzt dein Problem? Eigentlich enthält diese Frage doch schon die Lösung...

Öffne dein Splashformular, wo ist eigentlich egal, Hauptsache vor dem Laden der Daten (in der Projektdatei oder in FormCreate deines Hauptformulars).

Dann rufe die Laderoutine für deine Daten auf.

Nachdem Das Programm aus der Laderoutine zurückgekehrt ist, Schliesse dein Splash wieder:

Pseudocode:

Delphi-Quellcode:
MeinSplsch := TMeinSplash.Create(nil);
MeinSplash.Show;

LaodData;
InitializeData;
DoSomethingWithTheDataOnProgramStartup;

MeinSplash.Free;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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