Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

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

Re: ProgressBar auf splashform

  Alt 14. Apr 2009, 22: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