![]() |
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:
... also ganz normaler SplasScreen :-D
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; 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:
:?: wie kann ich das Formular wegblenden so daß nur noch der SplashScreen gezeigt wird während der Ausführung von OnCreate
Splash.Hide;
finally Splash.Free; end; Application.Run; :?: 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: |
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.
|
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: |
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?
|
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 |
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...
|
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. |
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...
|
Re: Splash und Modale Form
...nö...
:wiejetzt: ...wird einmal aufgerufen und geschlossen. :gruebel: Danke...schaue mir das mal an. |
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