Hallo BAMatze
Also ich denke, wenn du im kleinen dieses Tut nachbaust, wird es funktionieren.
Vielleicht hilft dir das weiter:
Wenn du dafür sorgst, dass alle Vorgänge des
Loaders abgeschlossen sind bevor in der
DPR das Application.Run kommt sollte das schon viele Probleme lösen.
Es bleibt die Frage wie man das macht. In deinem Fall würde ich vorschlagen, dass du nachdem du das SplashForm erzeugt hast du es anzeigst und Updatest und dann dort eine Methode aufrufst die den ganzen Ladevorgang abarbeitet. Wenn die Methode fertig ist, dann sollte das Run kommen.
Das sieht dann ungefähr so aus:
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True; // <--- zusätzliche Zeile
Application.CreateForm(TForm1, MainForm);
Application.CreateForm(TForm2, SplashForm);
SplashForm.Show;
SplashForm.Update;
SplashForm.LoadAll; // <-- Diese Methode must du Implementieren und mit dem füllen was beim laden alles passieren soll.
// jetzt brauchen wir den Spash-Screen nicht mehr -> Schliessen und aufräumen
SplashForm.Close;
SplashForm.Free;
Application.Run;
zur zweiten Frage:
Diese Zeile sorgt dafür, dass ab Vista dein MainForm nicht nur als Symbol erscheint sondern wenn du drüber fährst auch in dem Kleinen Vorschaufenster des MainForm angezeigt wird. Diese Funktionalität gibt es erst seit Delphi 2007 somit können das die Turbos (die auf Delphi 2006 aufbauen) nicht.
Per Compilerschalter der die Version abfragt kannst du dafür sorgen, dass du die Zeile drinne lassen kannst und in beiden Umgebungen den selben Quelltext behalten kannst.
Du kannst es im Prinzip selber machen mit der Liste der Versionen für die Compiler.
Delphi 1 = VER80
....
Delphi2007 = VER190
....
Die
jedi.inc löst genau alle diese Versionen auf in "schön" lesbare Namen z.B. hier zu finden
JEDI - JCL
Dadurch sieht Dein Projekt dann so aus:
Delphi-Quellcode:
{$I jedi.inc} // sorgt dafür, dass die Datei verwendet wird
{$IFDEF DELPHI2007_UP}
Application.MainFormOnTaskbar := True;
// <--- zusätzliche Zeile nur für Delphi 2007 und höher
{$ENDIF}
Du brauchst nicht die ganze JCL auf beiden Rechnern. Eigentlich nur die
jedi.inc in Deinem Projektverzeichnis. Aber ich weiße noch auf die Lizenzbedingungen hin. Diese sollte man ja vor allem bei Kommerziellen Projekten vorher immer prüfen
Gruß, Chris