Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Splash und Modale Form (https://www.delphipraxis.net/106194-splash-und-modale-form.html)

haentschman 7. Jan 2008 01:08


Splash und Modale Form
 
...Hallo alle :hi:

... was man so alles findet wenn man genauer hinschaut.
... zum Anfang ging das alles so schnell, daß es nicht aufgefallen ist... :-D

Das Problem:

1. die dpr:
Delphi-Quellcode:
  Splash := TSplash.Create(Application);
  try
    Splash.Show;
    Splash.Refresh;
  Application.Initialize;
  Application.CreateForm(TFMain, FMain);
  Application.CreateForm(TFDBAssi, FDBAssi);
  .
  .
  .
  Application.CreateForm(TDMDB, DMDB);
  Splash.Hide;
  finally
    Splash.Free;
  end;
  Application.Run;
... also ganz normaler SplasScreen :-D

2. :
- im OnCreate von DMDB erfolgt eine Überprüfung ob Datenbank vorhanden ist.
- im Falle von NEIN wird das Formular FDBAssi Modal angezeigt.
- beim Drücken auf OK ----> FDBAssi.Close;

3. :
- die Anwendung arbeitet wie erwünscht im OnCreate von DMDB weiter

aber... das Formular FDBAssi wird erst ausgeblendet wenn OnCreate komplett durchlaufen ist.

quasi dann:
Delphi-Quellcode:
 Splash.Hide;
  finally
    Splash.Free;
  end;
  Application.Run;
:?: wie kann ich das Formular wegblenden so daß nur noch der SplashScreen gezeigt wird während der Ausführung von OnCreate
:?: ist das Modale Aufrufen schon Blödsinn
:?: ist dynamisch erstellen besser ( brauche FDBAssi eh nur für den Fall der Fälle )

Danke schon mal für eure Hilfe...

PS: mit Hide, Visible, ApplicationProcessMessages habe ich schon experimentiert :roll:

Dani 7. Jan 2008 01:54

Re: Splash und Modale Form
 
Ich würde die Formulare dynamisch erzeugen und die Programmlogik soweit möglich von den Formularen trennen. Also keinen Code, der prüft, ob eine DB existiert, ins OnCreate eines Formulars usw.

haentschman 7. Jan 2008 02:08

Re: Splash und Modale Form
 
nun ja...

...im Splash wird der Status diverser Aktionen angezeigt (Update, Voreinstellungen laden, Import von Daten etc.)
... da diese Daten teilweise Objekte betreffen, müssen alle Objekte erzeugt sein.

- damit bleibt zwischen dem Splash und OnShow der MainForm nur das OnCreate der letzten Form in der dpr...also DMDB

...funktioniert eigentlich bestens bis auf dieses 'optische' Problem.

...ich bin mit dem Projekt schon so weit fortgeschritten, daß gravierende Veränderungen zeitlich nicht mehr machbar sind.
...damit ist der Ablauf eigentlich gegeben...

Danke für Dein Interresse... :hi:

Dani 7. Jan 2008 02:15

Re: Splash und Modale Form
 
Was passiert, wenn in FDBAssi beim Drücken von "OK" erst Self.Hide vor Self.Close aufgerufen wird? Ist es dann immer noch sichtbar?

haentschman 7. Jan 2008 02:19

Re: Splash und Modale Form
 
vor FDBAssi.Close...

- FDBAssi.Hide --- sichtbar
- FDBAssi.Visible:= False --- sichtbar
- FDBAssi.Free --- sichtbar-
- FDBAssi.Destroy --- sichtbar

...darum stelle ich ja so blöde Fragen :-D

Dani 7. Jan 2008 02:23

Re: Splash und Modale Form
 
Ich gehe mal davon aus, dass du mir jetzt nicht deinen gesamten Quellcode deines Projektes geben willst, daher versuche ich mal, die Situation irgendwie nachzubauen...

haentschman 7. Jan 2008 02:27

Re: Splash und Modale Form
 
... über 30 Forms würden denke ich den Rahmen sprengen. :-D

...das Fenster muß Modal sein, da im FDBAssi Einstellungen vorgenommen werden und dann wieder zurück im OnCreate DMDB die Datenbank erzeugt wird.

- funktioniert alles reibungslos nur bleibt FDBAssi 'optisch' stehen.... und der Nutzer soll sehen was auf dem Splash passiert.

Danke für Deine Hilfe... :thumb:

Tip:
- Form1
- Form2
- Form3
- Splash

Form1--MainForm
Form2 enthällt 1 Button welcher Form2 schließt
im OnCreate von Form3 rufst du Form2 Modal auf
danach weiter im On Create von Form3 eine Schleife welche auf Splash ein Label verändert mit Abbruchbedingung

...das ist eigentlich der ganze Ablauf.

Dani 7. Jan 2008 02:45

Re: Splash und Modale Form
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal ein Demo-Projekt gemacht, wo ich den Fehler reproduzieren wollte. Das hat aber nicht geklappt, es funktioniert so wie es soll. Rufst du evtl. irgendwo im Code nochmal FDBAssi.Show oder FDBAssi.Visible = true auf? Ansonsten kannst du dir das Demo-Projekt ja mal anschauen (ist sehr klein) und uns sagen, wo bei dir Unterschiede im Vorgehen sind...

haentschman 7. Jan 2008 02:51

Re: Splash und Modale Form
 
...nö...
:wiejetzt:

...wird einmal aufgerufen und geschlossen. :gruebel:

Danke...schaue mir das mal an.

haentschman 7. Jan 2008 03:18

Re: Splash und Modale Form
 
Danke für Dein Beispiel...

der Ablauf ist der gleiche wie bei mir. :gruebel:

... eben gehen alle Lampen an :wall: :wall:

die Procedure zum DB Erstellen ist zwar in DMDB definiert wird aber von DBAssi aufgerufen...

...d.h. bevor nicht der ganze Quatsch abgearbeitet ist kommt er gar nicht zu FDBAssi.Close. :oops:

...und damit belästige ich andere Leute :duck:

Vielen Dank noch einmal für Deine Denkhilfe....

[edit]
...jetzt wo ich darüber nachdenke hatte das schon seinen Sinn.
...Das Assistentenfenster kann nur bei bestehender DB Verbindung geschlossen werden.
...ich hatte nur die nachfolgenden Aktionen mit in die gleiche Prozedure gepackt.
...brauch das nur aufzusplitten...

Danke...Danke...
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz