Ich konnte es jetzt selbst lösen. Hab es so gemacht:
Projektdatei (*.dpr):
Delphi-Quellcode:
...
...
...
begin
Application.Initialize;
Application.CreateForm(TfrmManager, frmManager);
Application.CreateForm(TfrmSplash, frmSplash);
try
frmSplash.show;
frmSplash.Update;
frmSplash.RunApp;
finally
frmSplash.free;
end;
Application.Run;
end.
Und meine Procedure in frmSplash:
Delphi-Quellcode:
procedure TfrmSplash.RunApp;
var
config: Tinifile;
begin
imgStartLoading.Visible:=true;
Update;
sleep(1000);
//checks the config file
if FileExists(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\config.ini')=false then
//create config directory and copy default config file if it does not exist
begin
ForceDirectories(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\');
CopyFile(pchar(extractfilepath(application.ExeName)+'config.bak'),pchar(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\config.ini'), true);
end;
pgbInitalize.Position:=pgbInitalize.Position+20;
imgCheckConfig.Visible:=true;
Update;
sleep(1000);
//load configuration
config:=Tinifile.Create(GetShellFolder(CSIDL_APPDATA)+'\Web4Dev\config.ini');
frmManager.language:=config.ReadString('Application','Language','English');
pgbInitalize.Position:=pgbInitalize.Position+20;
imgLoadConfig.Visible:=true;
Update;
sleep(1000);
//load language
if frmManager.LoadLanguage(frmManager.language)=false then
begin
if frmManager.language<>'English' then
begin
//if it does failure, load english language
if frmManager.LoadLanguage('English')=false then
begin
//if english language cannot be loaded display a message and exit the program
if MessageDLG('Die Sprachdatei konnte nicht geladen werden!'+#13#10+'Klicken Sie auf OK um die Anwendung zu beenden!',mtError, [mbOK],0)=mrOK then
begin
config.Free;
Application.Terminate;
end
end
end
else
begin
//if english language cannot be loaded display a message and exit the program
if MessageDLG('Die Sprachdatei konnte nicht geladen werden!'+#13#10+'Klicken Sie auf OK um die Anwendung zu beenden!',mtError, [mbOK],0)=mrOK then
begin
config.Free;
Application.Terminate;
end
end
end
else
begin
pgbInitalize.Position:=pgbInitalize.Position+30;
imgLoadLanguage.Visible:=true;
Update;
sleep(1000);
end;
//free memory
config.Free;
pgbInitalize.Position:=pgbInitalize.Position+10;
imgRunApp.Visible:=true;
Update;
sleep(1000);
end;
Entscheidend ist das Update was ich bei jeden Bild aufrufe.