AGB  ·  Datenschutz  ·  Impressum  







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

ProgressBar auf splashform

Ein Thema von khh · begonnen am 14. Apr 2009 · letzter Beitrag vom 15. Apr 2009
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

ProgressBar auf splashform

  Alt 14. Apr 2009, 14:04
Hallo zusammen,
ich habe ein splashform welches ich folgendermassen anzeige:
Delphi-Quellcode:
  Application.Initialize;
  splashForm := TSplashForm.Create(nil);
  SplashForm.ShowOnTop;
  Application.ProcessMessages;
  SplashForm.Update;
  Application.CreateForm(TArtikelstammdatenForm, ArtikelstammdatenForm);
  Application.CreateForm(Tartikelbearbeitenform, artikelbearbeitenform);
  SplashForm.Hide;
  SplashForm.Free;
  Application.Run;
Ich möchte während der Anzeigedauer eine Progressbar laufen lassen und habe in eine Schleife im FormShow des splashforms
folgendes untergebracht:
Delphi-Quellcode:
  for i:= 1 to 10 do
  begin
   ProgressBar1.StepIt;
  end;
leider tut sich nix

ist die ereignisprocedure FormShow der falsche Ort, oder was mache ich falsch?


danke Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: ProgressBar auf splashform

  Alt 14. Apr 2009, 14:56
Hallo khh,

ich denke "JA" da mit .Show das Form nur (einmalig) angezeigt wird.
Du müßtest dann z.B. über einen Timer den SplashForm.ProgressBar ansteuern.
ggf. noch ein Application.processmessages dazwischen packen.

Ich bin mir nicht sicher, aber ich glaube eine ähnliche Frage wurde Anfang des Jahres gestellt.

Gruß
K-H
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#3

Re: ProgressBar auf splashform

  Alt 14. Apr 2009, 16:53
Zitat von p80286:
Hallo khh,

ich denke "JA" da mit .Show das Form nur (einmalig) angezeigt wird.
Du müßtest dann z.B. über einen Timer den SplashForm.ProgressBar ansteuern.
ggf. noch ein Application.processmessages dazwischen packen.

Ich bin mir nicht sicher, aber ich glaube eine ähnliche Frage wurde Anfang des Jahres gestellt.

Gruß
K-H

danke dir, werd ich so mal probieren



Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Yogu
Yogu

Registriert seit: 10. Jan 2008
15 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ProgressBar auf splashform

  Alt 14. Apr 2009, 20:54
Du solltest die ProgressBar nicht einfach hochzählen lassen - es sei denn, du weißt im Voraus, wie lange das Programm zum Starten braucht - sondern nach jeden Anweisung im Projekt-Quelltext erhöhen.

Also: Ändere die Eigenschaft Max der ProgessBar auf z.B. 4, und füge dann folgende Zeilen immer zwischen einer eigentlichen Befehlszeile ein:

Delphi-Quellcode:
  Application.Initialize;
  splashForm := TSplashForm.Create(nil);
  SplashForm.ShowOnTop;
  Application.ProcessMessages;
  SplashForm.Update;
  Application.CreateForm(TArtikelstammdatenForm, ArtikelstammdatenForm);

  SplashForm.ProgressBar1.StepIt;
  Applicatoin.ProcessMessages;

  Application.CreateForm(Tartikelbearbeitenform, artikelbearbeitenform);

  SplashForm.ProgressBar1.StepIt;
  Applicatoin.ProcessMessages;

  SplashForm.Hide;
  SplashForm.Free;
  Application.Run;
Wenn du es genauer haben willst, musst du eben die beiden Create-Methoden auseinander nehmen, und zum Beispiel in FormCreates auf die ProgressBar zugreifen.
Yogu
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#5

Re: ProgressBar auf splashform

  Alt 14. Apr 2009, 21:08
Och Kinders ...,
das Thema Splash-Screen wurde schon sooooo oft durchgekaut. Einfach mal die Forensuche benutzen!
Oder hier schauen.
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: ProgressBar auf splashform

  Alt 14. Apr 2009, 21:15
Application.ProcessMessages ausserhalb der Hauptschleife (also Application.Run) ist Pfui, denn es können seltsame Effekte entstehen.
Es werden ja nicht nur PAINT-Messages verarbeitet, sondern auch Tastendrücke, Mausklicks, usw.
Das möchte man während der Hochlaufphase der Anwendung natürlich nicht haben.
Delphi-Quellcode:
procedure TSplashForm.DoAStep;
begin
  ProgressBar1.StepIt;
  ProgressBar1.Repaint; // Zeichen
end;


......

{ alt
  SplashForm.ProgressBar1.StepIt;
  Applicatoin.ProcessMessages; }


  SplashForm.DoAStep; // neu
Noch besser ist, wenn man zusätzlich eine Info mitgibt, was das Programm gerade tut:
Delphi-Quellcode:
procedure TSplashForm.SetMessage(const text:string);
begin
  InfoLabel.Caption := text;
  InfoLabel.Repaint;
  DoAStep; // zusätzlich Progressbar weiterschalten
end;
....
  SplashForm.SetMessage('Lade Artikelstammdaten ...');
  Application.CreateForm(TArtikelstammdatenForm, ArtikelstammdatenForm);
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#7

Re: ProgressBar auf splashform

  Alt 15. Apr 2009, 07:39
Kleiner zusätzlicher Denkanstoß:
Wie wäre es mit der Methode "Update"?

Ich mache das bei den SplashForms immer so:
Delphi-Quellcode:
procedure TForm13.ShowNextStep(iPercent: integer);
begin
  Progressbar1.Position := iPercent;
  Update;
end;
In der dpr-Datei wird dann lediglich bis 100% hochgezählt, z. B. so:

Delphi-Quellcode:
   Application.Initialize;
   Application.CreateForm(TForm13, Form13); //-> Splashform
   Form13.Show;
   Form13.ShowNextStep(25);
   Application.CreateForm(TForm2, Form2);
   ...
   Form13.ShowNextStep(40);
   Application.CreateForm(TForm18, Form18);
   ....
   Form13.ShowNextStep(90);
   Form13.Close;
   Application.Run;
  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:31 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