Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi eine frage zu splash screen (https://www.delphipraxis.net/2548-eine-frage-zu-splash-screen.html)

chrys 28. Jan 2003 21:05


eine frage zu splash screen
 
hallo ich moechte gerne eine sagen wir mal FORM2 als splashscreen laden

ich will das wenn das programm startet zuerst das splashscreen startet und ein fullscreen movie ablaeuft... wenn dann der film fertig ist sollte der splash screen verschwienden und die form1 geladen werden ...

hat jemand eine ahung wie man das macht ??? :cry:

Brüggendiek 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

chrys 28. Jan 2003 22:42

sorry aber ich schnall das nicht .... bin warscheinlich schon ein wenig zu muede ..... hmmm :cry:

Brüggendiek 28. Jan 2003 22:53

Hallo Chrys!

Wenn Du Fragen hast, nur her damit. Leider kann ich Deinen Kenntnisstand nicht abschätzen, so daß ich das vielleicht etwas zu kompliziert erklärt habe.

Die von mir geposteten Codes laufen (mit kleinen Anpassungen) so bei einem meiner Programme. Allerdings verzieht sich Programm neben die Uhr - der Splash-Screen ist ein einfaches Bild und wird schlicht über einen Timer beendet.

Gruß

Dietmar Brüggendiek


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz