Announcement

Collapse
No announcement yet.

Splash Form anzeigen, bevor der Package Ladevorgang einsetzt

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

  • Splash Form anzeigen, bevor der Package Ladevorgang einsetzt

    Hallo zusammen,

    in meiner Delphi Applikation werden sehr viele Packages benötigt. Die Ladephase ist entsprechend lang.

    Wenn der Benuter das Icon auf seinem Desktop anklickt um das Programm zu laden. Wollte ich eine Splashform oder die Sanduhr anzeigen.

    Diese Geschichte wollte ich in ein Laufzeitpackage unterbrigen. Diese Package soll nun als erstes geladen werden. Im Initialize Abschnitt wolle ich die Form erstellen und anzeigen.

    Jedoch nutze ich den Lademechanismus von Delphi. Muss diesen jetzt nur irgendwie sichtbar machen.

    Hat jemand eine Idee oder einen Vorschlag für mich ?

    Gruß
    Mathias

  • #2
    Hallo,

    am einfachsten wird es sein, eine separate EXE für das Anzeigen des Splash-Formulars zu verwenden. Wenn die Hauptanwendung dann voll funktionstüchtig ist, kann sie dann ein private Botschaft an die Splash-EXE senden, damit sich diese selbst terminiert

    Comment


    • #3
      Ich würde das Splash-Fenster nicht in ein Package verlagern sondern schon im OnCreate bzw. im Konstruktor des Hauptformulars erzeugen und anzeigen. Alles andere ist zu viel Aufwand gegenüber dem Nutzen

      Comment


      • #4
        Hallo,

        danke für die Vorschläge.

        -> separate EXE

        Finde ich gut, aber ich überlege schon einige Minuten wie man das ralisieren kann. Kannst Du mir grob beschreiben wie das umzusetzen ist. Denn es müssen hier 2 Programme gehändelt werden. Die Splash APP müsste demzufolge die Main APP starten, oder ?

        -> OnCreate der Application.MainForm

        OnCreate wird erst nach dem Laden aller Packages durchlaufen. Der Packageladevorgang wird vor dem eigentlichen Programmstart durchgeführt. Normalerweise wird dieses vom OS übernommen.

        Mathia

        Comment


        • #5
          Hallo,

          >Die Splash APP müsste demzufolge die Main APP starten, oder ?

          Ja, ein einfaches ShellExecute reicht aus, um die Hauptanwendung zu starten. Sobald das Hauptformular der Anwendung sichtbar ist, kann der Splash-Anwendung der "Befehl" zum Beenden geschickt werden:
          <pre>
          <b>var</b>
          hSplashAppWnd : HWND;
          <b>begin</b>
          hSplashAppWnd := FindWindow(<b>nil</b>, <font color="#9933CC">'MeineSplashAppFensterBeschriftung '</font>);
          <b>if</b> hSplashAppWnd &lt;&gt; 0 <b>then</b>
          PostMessage(hSplashAppWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
          </pre&gt

          Comment

          Working...
          X