Announcement

Collapse
No announcement yet.

Fortschrittsanzeige beim Programmstart

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

  • Fortschrittsanzeige beim Programmstart

    Hallo,

    ich möchte beim Start meines Programmes eine Fortschrittsanzeige einblenden, die den Startvorgang anzeigt. Ich weiss nur leider nicht wie es am besten angefasst wird. Ich möchte umgehen, dass ich nach jeden geladenen Formular die Anzeige "von Hand" hochsetzten muss. Gibt es einen anderen Weg??

    Gruß
    Heiko

  • #2
    Hier ein Beispiel:
    <pre>
    program ABV;
    <br>
    uses
    Forms,
    Hauptmenue in 'Hauptmenue.pas' {HauptFrm},
    StartDsp in 'StartDsp.pas' {splashScreen},
    Stammdaten in 'Stammdaten.pas' {StammFrm},
    AdressenModul in 'AdressenModul.pas' {AdressenMod: TDataModule},
    Forderungsarten in 'Forderungsarten.pas' {FArtFrm},
    Banken in 'Banken.pas' {BankenFrm},
    PLZ in 'PLZ.pas' {PLZFrm},
    Berechtigungen in 'Berechtigungen.pas' {BerFrm},
    Drucken in 'Drucken.pas' {DruckFrm},
    Formulardrucken in 'Formulardrucken.pas' {FormPrint},
    ZoomGrafik in 'ZoomGrafik.pas' {ZoomGrafikFrm},
    Erkldrucken in 'Erkldrucken.pas' {ErklFrm},
    sndMail in 'sndMail.pas' {SndMailFrm};
    <br>
    {$R *.RES}
    <br>
    begin
    Application.Initialize;
    with TSplashScreen.Create(nil) do
    try
    Progressbar1.Max := 12;
    show;
    update;
    Application.Title := 'Abbucherverwaltung';
    Application.HelpFile := 'abv.hlp';
    Application.CreateForm(THauptFrm, HauptFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TAdressenMod, AdressenMod);
    Progressbar1.StepBy(1);
    Application.CreateForm(TSndMailFrm, SndMailFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TFArtFrm, FArtFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TErklFrm, ErklFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TZoomGrafikFrm, ZoomGrafikFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TStammFrm, StammFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TBankenFrm, BankenFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TPLZFrm, PLZFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TBerFrm, BerFrm);
    Progressbar1.StepBy(1);
    Application.CreateForm(TFormPrint, FormPrint);
    Progressbar1.StepBy(1);
    Application.CreateForm(TDruckFrm, DruckFrm);
    Progressbar1.StepBy(1);
    finally
    free
    end;
    Application.Run;
    end.
    </pre>
    TsplashScreen ist ein Formular, das eine Grafik und eine ProgressBar enthält

    Comment


    • #3
      Hallo Peter,

      sei nicht böse, aber das "unformatierte Zeugs"
      kann ich nicht lesen

      Vielleicht kannst du mir den entsprechenden Abschnitt mal mailen...

      [email protected], wär nett

      Heik

      Comment


      • #4
        Ich habe die Formatierung etwas aufgemöbel

        Comment


        • #5
          Danke für das aufmöbeln.

          So ähnlich wie beschrieben gehe ich schon vor, ich setzte die ProgressBar nur um konkrete Werte hoch....

          Ich dachte es gäbe einen Weg, eben das MAX der ProgressBar automatisch anhand der Anzahl der Formulare zu ermitteln...

          War wohl nix :-(

          Danke trotzden

          Heik

          Comment


          • #6
            Hallo,

            &gt;anhand der Anzahl der Formulare ...

            nicht jedes Formular benötigt die gleiche Zeit zur Initialsierung, so dass ich an dieser Stelle die ProgressBar-Werte direkt so setze, dass für den Anwender ein "rundes" Ergebnis herauskommt

            Comment


            • #7
              Hallo zusammen,

              tja, also ich weiß nicht, wie es im Delphi aussieht, aber im BCB werden beim Hinzufügen eines neuen Formulars alle Zeilen zwischen den Application.CreateForm-Zeilen gelöscht...

              Wenn eine Statuszeile unumgänglich ist, würde ich die Formulare dynamisch erzeugen, in einer eigenen Unit.

              Ich hab' das Problem mit langen Ladezeiten bei mir so gelöst, daß nicht alle Formulare beim Programmstart erzeugt werden, sondern nur einige. Die weiteren Formulare (insbesondere die mit langen Ladezeiten) lade ich zur Laufzeit dynamisch nach. Aber das macht auch nur Sinn, wenn die Aufrufe für ein bestimmtes Formular immer von einer zentralen Stelle ausgehen...

              Grüße Joche

              Comment


              • #8
                Das ist imho sowieso der generell bessere Weg.<br> Beim Programmstart werden lediglich die unbedingt nötigen Formulare erstellt, alle Formulare, die nur bei bestimmten Anwenderaktionen angezeigt werden, werden zur Laufzeit erstellt und wieder freigegeben

                Comment


                • #9
                  Hallo,

                  klar erzeuge ich nur die grundsätzlich unumgäglichen Formulare beim Start; von daher kann ich mich mit der "manuellen" Lösung durchaus anfreunden. Ich dachte halt nur, es gibt eine Möglichkeit wo eben diese arbeit unnötig wäre.

                  Danke für die ganzen Tipps.

                  Heik

                  Comment

                  Working...
                  X