Announcement

Collapse
No announcement yet.

Erstellreihenfolge der Forms?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Erstellreihenfolge der Forms?

    Hi!

    Vorab ich arbeite mit dem BCB 6.

    Hab da ein Problem. Ich hab eine Form namens Form1 das ist meine Hauptform.
    So die soll beim Starten angezeigt werden. Wenn aber keine Verbindung zu nem Server aufgebaut werden kann, das kann ich mit ner Funktion namens testConnection() testen, dann soll am Anfang die Form Connect angezeigt werden und die Hauptform(Form1) soll unsichtbar sein. Erst nachdem man sich durch die Form Connect geklickt hat und dann die Verbindung steht soll die Connect-Form verschwinden und die Hauptform(Form1) angezeigt werden.

    Doch wie kann ich das realisieren?

    Wenn ich nämlich im Konstruktor oder der OnCreate Methode der Form1 auf die Connect Form zugreifen will ist diese noch nicht erstellt oderß Ich bekomm jedenfalls ne Fehlermeldung.

    Gruß

    Maruu

  • #2
    Hi Maruu,

    ich bin mir zwar nicht sicher, ob dich das zufrieden stellt, aber hier wäre eine mögliche Lösung:

    Du kannst die Form2 in OnCreate() nicht aufrufen, da sie zu diesem Zeitpunkt noch nicht existiert. Wenn du im Projekt-Quelltext nachschaust, wirst du sehen, daß die erste anzuzeigende Form auch zuerst angelegt wird.
    Deshalb bleibt dir nur die Möglichkeit die Form2 in der Form1->OnShow() Funktion anzuzeigen. Die Form1 ist zu diesem Zeitpunkt aber noch nicht visible und du kannst deshalb hier auch die Form1 nicht gleich wieder unsichtbar machen. Du könntest aber einen Timer mit 1 ms starten und dann bei OnTimer() die Form1 unsichtbar machen. Kleiner Nachteil: Du siehst die Form1 kurz aufblitzen. Das kannst du nur minimieren, inden du in der Form1->OnShow zusätzlich den Windowstate auf wsMinimized einstellst. Dann siehst du fast nichts mehr außer ein kurzes Flackern kurz über der Taskleiste. Beim Schließen der Form2 kannst du dann den Windowstate wieder auf wsNormal setzen und Form1->Show() aufrufen.

    Das ist zwar Bastelei, funktioniert aber.

    Bye - Pete

    Comment


    • #3
      Hi, danke für deine Antwort.
      Hab paralell noch in nem anderen Forum gepostet
      und da ne sehr gute Antwort bekommen.

      Man nimmt unter Projekt->Optionen die Connect-Form aus den
      automtischh zu erstellenden Forms raus und schreibt in die OnCreate Methode der Form1 folgendes:

      TConnectForm* ConnectForm = new TConnectForm(this); ConnectForm->ShowModal();

      ... ... ... delete ConnectForm;

      Durch das ShowModal() wird die Connect-Formangezeigt und
      in der Form1 erst weiter gemacht und angezeigt wenn die ConnectForm geschlossen wird.

      Gruß

      Maru

      Comment


      • #4
        Hi Maruu,
        noch eine Anregung:
        ich hatte mal ein ähnliches "Problem", zusätzlich sollte sich die Anwendung nach falschen Eingaben in der Connect-Form komplett schließen. Mit der bisherigen Lösung (mit new/ShowModal) führte das immer zu einem kurzen Aufblitzen des Hauptfensters, bevor die Anwendung endgültig endet.

        Ich hab' das umgangen, indem ich statt einer Connect-Form zwei Frames erstellt habe (ein Connect-Frame, ein Main-Frame), diese in _eine_ Form eingefügt habe und dann nur noch die Frame->Visible-Eigenschaften gesteuert habe, um die gewünschte Reihenfolge des Erscheinens zu erhalten. Zusätzlich kann man bei Anzeige des Connect-Frame die Border-Eigenschaft der Form auf "Single" setzen, um ein Dialog-artiges Feld hinzubekommen.

        Gruß,
        Marti

        Comment


        • #5
          Hi!

          Danke für den Tipp. Leider geht das bei mir nicht ganz weil ich
          einige Sachen schon in OnCreate von der Form1 lade.
          Aber das kurze Aufblitzen stört mich nicht.

          Trotzdem danke für den Tipp.

          Gruß

          Maru

          Comment


          • #6
            Hallo
            Versuch doch mal alles wie ein splashscreen aufzubauen. Wie das get findest du unter thebits.org unter tutorial.
            Gruss Renat

            Comment

            Working...
            X