Warten, bis ein Formular fertig geladen ist.



  • Hallo zusammen,

    ich habe ein Programm, bei dem beim Start ein Fenster geöffnet werden soll, das eine Abfrage enthält (z.B. wollen Sie "a" oder "b").

    Das habe ich realisiert, indem ich den Aufruf des Formulars in FormShow eingegeben hab. Also so:

    void__fastcall Form1::FormShow(TObject *Sender)
    {
       Form2->ShowModal();
       .
       .
       .
    }
    

    Leider wird aber nur Form2 und nicht Form1, welches das Hauptformular ist, angezeigt. Das hätte ich eber gerne, weil in Form2 eine Selektion drin ist, anhand der eine lange Liste geladen wird, was ca. 30 Sekunden dauert (10000 Einträge incl. Filtern und Sortieren).
    Wenn ich vor Form2->ShowModal(); Form1->Paint(); eingebe, also so:

    void__fastcall Form1::FormShow(TObject *Sender)
    {
       Form1->Paint(); 
       Form2->ShowModal();
       .
       .
       .
    }
    

    geht das auch nicht.

    Hat jemand eine Idee ??
    Sonst müsste ich halt eine Animation oder so was reinsetzen.
    Danke.

    Gruß Markus



  • setze Form2->ShowModal();
    nach deiner Einleseroutine oder beschreibe das ganze mal genauer,
    ansosten kann ich dir noch empfehelen eine DialogBox zu verwenden wenn
    du nur 2-3 unterscheidungen hast, dessen Inhalt (Caption der Button etc.)
    lassen sich spielend einfach ändern.

    .... Wenn deine Einleseroutine z.B. in TForm(Owner) oder FormCreate
    steht dann kannst du lange warten.
    Starte deine Routine durch FormShow, und nach abschluß zeige Form2

    .... oder wie gesagt beschreibe das ganze mal genauer wo du was an
    code hast

    gruss Promicha



  • Benutz' das OnActivate-Event von Form1. Das wird zwar noch bei manchen Restore-Operationen ausgelöst, über ein Flag (z.B. die Tag-Property der zweiten Form) kannst ein ungewolltes Öffnen aber leicht verhindern



  • @Jansen
    Danke. Das klappt. Ich hab das zwar bereits probiert und da gings nicht.
    Aber nicht weils falsch war sondern weil ich im "OnCreate" Event eine Laufwerksabfrage mache. Eins davon war ein Netzwerkpfad. Und ich hab vom Laptop das Netzkabel abgesteckt 🙂 Naja, sei einfach so nett und spar Dir nen Kommentar 🙂

    @Promica
    Danke. Aber in dem Formular sind schon noch ein paar Abfragen mehr drin. Das o.g. war nur ein Beispiel.
    Ich kann die Einleseroutine nicht vorher ablaufen lassen, da der User in dem Formular entscheiden muss, was eingelesen werden soll. Sonst müsste ich alles einlesen und den Rest wieder löschen.
    Vor einem Jahr hätt ich das wahrscheinlich auch so gemacht 🙂

    Gruß Markus


Anmelden zum Antworten