Hallo Chrys!
Eine gute Möglichkeit ist das OnPaint-Ereignis des Hauptformulars.
Delphi-Quellcode:
procedure tForm1.BildAusgabe(Sender: Tobject);
begin
Self.Hide;
SplashAnzeigen;
Self.Show
OnPaint := nil; //darf nur einmal aufgerufen werden, deshalb löschen
end;
Dann wird einmal beim Zeichnen des Hauptformulars die Prozedur SplashAnzeigen aufgerufen.
In der Unit2 schreibst Du zunächst wie gewohnt das Formular und den ganzen Anzeige-Bedarf. Wichtig: Wenn der Film abgelaufen ist, muß ModalResult gesetzt werden, z.B. auf mrOk (ist nicht wichtig, welcher Wert, nur ungleich mrNone!). Dann brauchst Du noch eine Prozedur. In den Implementations-Teil der
Unit (vor, zwischen oder hinter die Klassen-Funktionen) schreibst Du:
Delphi-Quellcode:
procedure SplashAnzeigen;
var Form2: tForm2;
begin
Application.Createform(tForm2, Form2);
try
Form2.ShowModal;
finally
Form2.Free;
end;
end;
und kopierts die erste Zeile zusätzlich in den Interface-Abschnitt der
Unit. Die unit2 im Implementation-Abschnitt der Unit1 in die USES-Liste einbinden und natürlich das automatische Erzeugen von Form2 abschalten (alle Formulare im Speicher kostet unnötig
RAM - und Dein Vorhaben scheint groß zu werden).
Nebenbei: ICH benenne meine Sachen immer aussagekräftig um - nicht tForm1, sondern tHauptBild, nicht tForm2, sondern tSplash etc!
Theoretisch kann man auch den Code der Aufruf-Prozedur direkt in die aufrufende Routine schreiben, aber wenn man etwas mehrmals aufruft, schreibt man den Aufruf mit Bild erzeugen/aufrufen/freigeben mehrmals. Deshalb habe ich in Formular-Units immer den Aufruf des Formulars mit drin.
Gruß
Dietmar Brüggendiek