Delphi-PRAXiS
Seite 2 von 2     12   

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 Progressbar während Objekterzeugung aktualisieren (https://www.delphipraxis.net/161661-progressbar-waehrend-objekterzeugung-aktualisieren.html)

Echtet 15. Jul 2011 10:38

AW: Progressbar während Objekterzeugung aktualisieren
 
Hallo,

Zitat:

Ansonsten muss sich eben jede Komponente melden, wenn sie fertig ist.
Das hört sich interessant an. Leider haben die Komponenten keine OnCreate-Ereignis, in das ich mich einklinken könnte. Hat jemand einen Tip zu dieser Variante?

Zitat:

Und wie soll eine Komponente etwas anzeigen können, wenn sie noch gar nicht existiert?
Ich vermute mal, dass sich hier ein Missverständnis eingeschlichen hat (oder ich verstehe es nicht):
1. Ich erzeuge ein Login-Formular.
Im Login-Formular befindet sich die Progressbar (momentan noch deaktiviert)
2. Ich prüfe User und kennwort ab
3. Ist beides Korrekt, wird die Progressbar aktiviert und sie sollte "loslaufen"
4. Nun wird das Hauptformular (mit den vielen Komponenten erzeugt und mit Show angezeigt)
5. Während diese Erzeugens des Hauptformulars ändert sich leider nicht die Fortschrittsanzeige der Progressbar.

Zitat:

Stichwort: Splashscreen
Das mit dem SplashScreen muss ich mir mal genauer anschauen. Ich dachte bisher, ein Splashscreen dient nur dazu, vor dem Start des Programms "die wartezeit zu versüßen". Bei mir läuft das Programm ja bereits (in Form der Login-Maske) und der SplashScreen müsste nun zwischen Login-Maske und Hauptformular erscheinen. Ist das so machbar?

Danke für die vielen Hinweise!
Gruß,
Echtet

stahli 15. Jul 2011 10:59

AW: Progressbar während Objekterzeugung aktualisieren
 
Hier ist erklärt, dass Dein Vorhaben im MainThread nicht so einfach umzusetzen ist.

Wenn es um wenige Sekunden nach der Anmeldung geht, würde ich im LoginForm einfach ein nettes Image "bitte warten..." anzeigen.

Für eine laufende ProgressBar müsstest Du diese (die betreffende Instanz) Deinem Mainform übergeben, das diese dann zyklisch hochzählt. Da der Ladefortschritt aber durch Dich schwer zu überwachen ist, wird das wohl schwierig werden.

Ein empfehlenswerter Ansatz für sehr komplexe Formulare kann sein, mit embeded Forms zu arbeiten (oder notfalls mit Frames).
Dadurch erhält man eine übersichtlichere Projektstruktur und Du könntest bei jedem Form, das eingebettet wird, einen Fortschritt darstellen.

sHoXx 15. Jul 2011 11:33

AW: Progressbar während Objekterzeugung aktualisieren
 
oder du machst so nen balken, wie er beim bootvorgang von xp kommt der einfach nur durchläuft und keinen fortschritt anzeigt

stahli 15. Jul 2011 11:39

AW: Progressbar während Objekterzeugung aktualisieren
 
Das ist dann eine ProgressBar im Marguee-Style.
Das Problem ist aber, dass diese still steht, wenn das Programm beschäftigt ist (z.B. weil es ein Formular lädt).

omata 15. Jul 2011 13:26

AW: Progressbar während Objekterzeugung aktualisieren
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hier ein Beispiel...

Echtet 17. Jul 2011 17:58

AW: Progressbar während Objekterzeugung aktualisieren
 
Hallo Delphianer,

vielen Dank nochmal für die vielen Tips. Aufgrund der Hinweise zum SpashScreen habe ich mir diese Thematik nochmal näher angeschaut (velen Dank auch an Omata für die beispielhaften Routinen!).

Ich werde wohl aus den TMS-Componenten die Komponente für den SpashScreen verwenden. Damit kann ich einigermaßen die gewünschte Funktionalität abbilden.

Da mir anfangs nicht bewusst war, dass man einen SplashScreen nicht nur zu Programmbeginn einblenden lassen kann, hier mal skizzenhaft mein Vorgehen. Vielleicht hilft es dem einen oder anderen ebenso...

1. Form1 (Login = Hauptformular) wird beim Programmstart automatisch erzeugt.
2. frmMain wird nach korrekter anmeldung aufgerufen.
3. Die Spash-Komponente wird auf dem frmMain abgelegt.
4. Nachdem aus der Form1 der Befehl "Application.CreateForm(TfrmMain, frmMain);" ausgeführt wurde, startet nach kurzer Verzögerung der SpashScreen
5. frmMain wird angezeigt "frmMain.Show"
6. Spash-Komponente wird ggf beendet bzw blendet langsam aus

Gruß,

Echtet

jaenicke 18. Jul 2011 09:11

AW: Progressbar während Objekterzeugung aktualisieren
 
Naja, aber Moment, wenn das das Problem löst, sind das Problem doch nicht die vielen Komponenten, sondern das was in OnCreate oder OnShow passiert, oder?
Denn die Komponenten sind ja bereits vollständig erzeugt, wenn du in OnCreate ankommt.

Echtet 18. Jul 2011 14:17

AW: Progressbar während Objekterzeugung aktualisieren
 
Hallo,

deswegen sagte ich ja auch "damit könne ich einigermaßen die Funktionalität abbilden".

Du hast sicherlich recht, dass die Lösung nicht perfekt ist. Ich denke schon, dass die Anzahl der Komponenten eine Rolle spielt, denn diese werden doch mit der Erzeugung des Hauptformulars ebenfalls erst (automatisch mit dem Formular) erzeugt.

Tatsächlich habe ich immer noch eine Wartezeit, bis der SplashScreen angezeigt wird, aber diese ist kürzer als ohne die SpashScreen-Lösung.

Ich bleibe aber weiter dran, ob es ggf. noch weiter verbesserungsmöglichkeiten gibt.

Gruß,
Echtet


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.
Seite 2 von 2     12   

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