AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ladebalken in Splash

Offene Frage von "Svenkan"
Ein Thema von Svenkan · begonnen am 27. Sep 2007 · letzter Beitrag vom 28. Sep 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Ladebalken in Splash

  Alt 27. Sep 2007, 19:19
Hallo,
ich möchte gerne einen Ladebalken zu Start meines Programms in meinen Splash-Screen anzeigen lassen.
Dieser soll anzeigen, wie weit das Programm bereits geladen wurde.

Wie ist möglich?
Sven Kannenberg
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Ladebalken in Splash

  Alt 27. Sep 2007, 19:35
Dazu müsste irgend ein Codestück den globalen Überblick haben wie vielen Einheiten der gesamte Ladevorgang hat und wie viele Einheiten schon geladen wurden.
Jede Änderung am Programm würde hier wieder Nacharbeit nach sich ziehen.
Deutlich einfacher wäre dem Benutzer auf einem Label anzuzeigen, was gerade passiert.
z.B. "Lade globale Optionen", "Lade Artikel..."
Delphi-Quellcode:
class procedure TSplashForm.DisplayMessage(const s: string);
begin
  if Assigned(SplashForm) then
  begin
    SplashForm.LabelInfo.Caption := s;
    SplashForm.Update;
  end;
   
  LogObj.WriteLogFile('SplashForm: '+s);
end;
Andreas
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

Re: Ladebalken in Splash

  Alt 27. Sep 2007, 20:17
Hallo, ich mache sowas gleich in der dpr-Datei.
Das Form SplashScreen hat eine public-Procedure (StepForward), die den Vortschrittsbalken weiterschiebt bzw. neu setzt. Hier der Code einer dpr-Datei von mir. Hab aber einiges rausgenommen. Soll ja nur das Prinzip verdeutlichen.
Delphi-Quellcode:
program irgendwas;

uses
  Forms,
  Windows,
  SysUtils,
  Controls,
  ph2_Tools in '..\4AllUnits\ph2_Tools.pas',
  ph2_Main in '..\4AllUnits\ph2_Main.pas{frmMain},
  ph2_Splash in '..\4AllUnits\ph2_Splash.pas{SplashScr},
  ph2_HauptMenu in '..\4AllUnits\ph2_HauptMenu.pas{HauptMenu},
  ph2_ShowUebung in 'Units\ph2_ShowUebung.pas',
  ph2_Sound in '..\4AllUnits\ph2_Sound.pas',
  ph2_frm301 in 'Units\ph2_frm301.pas{frm301},
  ph2_afrm301 in 'Units\ph2_afrm301.pas{auf301},
  ph2_frm302 in 'Units\ph2_frm302.pas{frm302},
  ph2_frm303 in 'Units\ph2_frm303.pas{frm303},
  ph2_afrm303 in 'Units\ph2_afrm303.pas{auf303},
  ph2_frm304 in 'Units\ph2_frm304.pas{frm304},
  ph2_afrm304 in 'Units\ph2_afrm304.pas{auf304},
  ph2_frm305 in 'Units\ph2_frm305.pas{frm305},
  ph2_frm306 in 'Units\ph2_frm306.pas{frm306};

{$R *.res}

begin
  ProgrammIndex:=3;
  Application.Initialize;
  Application.Title := 'Elektronik';
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TLoginScreen, LoginScreen);
  if ((LoginScreen.ShowModal=mrOK) and AppData.appLoginOK) then begin
    Application.CreateForm(TSplashScr, SplashScr);
    SplashScr.ProgressBar.Max:=10;
    SplashScr.show;
    SplashScr.repaint;
    LoginScreen.Free;
    //alle anderen Windows laden
    SplashScr.StepForward; //Position 1
    if FileExists(AppData.ResPath+'HG.bmp') then
     frmMain.BackGround.LoadFromFile(AppData.ResPath+'HG.bmp');
    SplashScr.StepForward; //Position 2
    if FileExists(AppData.ResPath+'crDefault.cur') then
     Screen.Cursors[myDefault]:=LoadCursorFromFile(PChar(AppData.ResPath+'crDefault.cur'));
    Screen.Cursor:=myDefault;
    SplashScr.StepForward; //Position 3
    Application.CreateForm(THauptMenu, HauptMenu);
    SplashScr.StepForward; //Position 4
    //Übung 1
    Application.CreateForm(Tfrm301, frm301);
    Application.CreateForm(Tauf301, auf301);
    SplashScr.StepForward; //Position 5
    //Übung 2
    Application.CreateForm(Tfrm302, frm302);
    SplashScr.StepForward; //Position 6
    //Übung 3
    Application.CreateForm(Tfrm303, frm303);
    Application.CreateForm(Tauf303, auf303);
    SplashScr.StepForward; //Position 7
    //Übung 4
    Application.CreateForm(Tfrm304, frm304);
    Application.CreateForm(Tauf304, auf304);
    SplashScr.StepForward; //Position 8
    //Übung 5
    Application.CreateForm(Tfrm305, frm305);
    SplashScr.StepForward; //Position 9
    //Übung 6
    Application.CreateForm(Tfrm306, frm306);
    SplashScr.StepForward; //Position 10
    SplashScr.Free;
    Application.Run;
  end else begin
    Application.Terminate;
  end;
end.
Karl-Heinz
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Ladebalken in Splash

  Alt 28. Sep 2007, 14:28
@ Progman: Leider ist es so, dass wenn ich den Code zum Weitersetzen reinschreibe, die Forms, die darunterliegen, 'rausgenommen' werden und der Splash-Screen dann auch nicht geschlossen wird, weil anscheinend die Initialisierung gar nicht mehr abgeschlossen wird.

@ shmia: Woher bezieht das Programm denn bei deinem Code die Abläufe?
Sven Kannenberg
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Ladebalken in Splash

  Alt 28. Sep 2007, 15:06
Zitat von Svenkan:
@ shmia: Woher bezieht das Programm denn bei deinem Code die Abläufe?
Angenommen beim Start werden mehrere Datenmodule und Formulare geladen.
Dann muss das SplashForm mit Uses in jede dieser Unit eingebunden werden.
Im Event OnCreate steht dann z.B. Folgendes:
Delphi-Quellcode:
procedure TArtikelDataModule.DataModuleCreate(Sender: TObject);
begin
   TSplashForm.DisplayMessage('Verbinde mit Datenbank...');
   Connection.Connect;
   TSplashForm.DisplayMessage('Lade Artikel...');
   QryArtikel.open;
   TSplashForm.DisplayMessage('Artikel geladen');
end;
Wenn dein Programm wären des Ladens auf einen Fehler trifft, dann sieht man auf dem SplashForm, was die letzte Aktion war; eine gute Hilfe zur Fehlereingrenzung.
Wenn das SplashForm nicht angezeigt wird, dann passiert nix, da in TSplashForm.DisplayMessage überprüft wird, ob das SplashForm überhaupt da ist.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz