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);