Einzelnen Beitrag anzeigen

Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#2
  Alt 28. Jan 2003, 21:33
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
Dietmar Brüggendiek
  Mit Zitat antworten Zitat