AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Splashscreen: Formcreate der Mainform ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Splashscreen: Formcreate der Mainform ausführen

Offene Frage von "Svenkan"
Ein Thema von Svenkan · begonnen am 19. Jul 2007 · letzter Beitrag vom 20. Jul 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Splashscreen: Formcreate der Mainform ausführen

  Alt 19. Jul 2007, 23:39
Hey!
Ich habe einen Splashscreen in meine Anwendung eingebaut. Ich möchte nun, dass währenddessen auch direkt THauptform.FormCreate ausgeführt wird und erst nach deren Abschließen der Screen geschlossen wird.

Delphi-Quellcode:
procedure TSplash.SetInitializationDone(const Value: Boolean);
begin
  FInitializationDone := Value;
  Close;
end;

procedure TSplash.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := (not Timer1.Enabled) and FInitializationDone;
end;

procedure TSplash.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  Close;
end;

procedure TSplash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  Splash := nil;
end;
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Splashscreen: Formcreate der Mainform ausführen

  Alt 19. Jul 2007, 23:48
Wo zeigst du denn den Splashscreen an, das geht aus deinem Code nicht hervor.

Wenn du den Screen mit Show() aufrufst, wird der restliche Initialisierungscode aus deinem Hauptformular doch weiter geladen.
Wenn du Darstellungsprobleme kriegst, z.B: wenn du eine andere Anwendung über den Splashscreen ziehst, so wird dieser nicht neu gezeichnet, kannst du die ganze Splashgeschichte auch in einen eigenen Thread auslagern.
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Splashscreen: Formcreate der Mainform ausführen

  Alt 20. Jul 2007, 00:24
Ich habe dieses Tutorial von dieser Seite benutzt. Dort wird der Splash-Screen in folgendem Code abgerufen:

Delphi-Quellcode:
begin
  Splash := TSplash.Create(Application);
  try
    Splash.Show;
    Splash.Refresh;
    Application.Initialize;
    Application.Title := 'VPlan';
    Application.CreateForm(THauptform, Hauptform);
    Application.CreateForm(TGrundeinstellungen, Grundeinstellungen);
    Application.CreateForm(TAbout, About);
    Application.CreateForm(TLizenz, Lizenz);
    Application.CreateForm(THTMLFarben, HTMLFarben);
    Application.CreateForm(TSettings_FTP, Settings_FTP);
    Application.CreateForm(TIndexseite, Indexseite);
  finally
    Splash.InitializationDone := True;
  end;
  Application.Run;
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Splashscreen: Formcreate der Mainform ausführen

  Alt 20. Jul 2007, 00:38
Ja, und was funktioniert nicht an dem Code ? Die ganzen Application.CreateForm werden doch nach Anzeigen des Splashscreens durchgeführt und zum Schluss wird der Splashscreen wieder ausgeblendet.
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Splashscreen: Formcreate der Mainform ausführen

  Alt 20. Jul 2007, 00:41
Startet nicht Application.Run erst die Nachrichtenschleife?
Wenn ja, dann müsste das nach dem Erzeugen des Splash-Screens geschrieben werden, nicht erst am Ende wenn schon alle Formulare fertig geladen sind. Genau so würde ich das Apllication.Initialize vor die Erzeugung des Screens schreiben.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Splashscreen: Formcreate der Mainform ausführen

  Alt 20. Jul 2007, 00:50
Ich denke nicht dass das Abarbeiten von Botschaften und Events für Ladeverzögerungen verantwortlich sind (in der Regel). Du kannst natürlich auch im OnShow Event deines Hauptformulars den SPlashscreen schliessen.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Splashscreen: Formcreate der Mainform ausführen

  Alt 20. Jul 2007, 08:47
Hi,

ich bevorzuge für SplashScreens folgendes:

Der SplaschScreen wird unter den Projektoptionen deaktiviert, sodass man ihn manuell erstellen muss.

Delphi-Quellcode:
uses
  USplash;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  SplashScreen := TSplashScreen.Create(Application);
  SplashScreen.Show;
  Application.ProcessMessages;

  //Initialisation - währenddessen wird der Splash angezeigt!
  Blablubb := TBlablubb.Create('blubbblubb');
end;

procedure TMainForm.FormActivate(Sender; TObject);
begin
  if Assigned(SplashScreen) then
  begin
    //Hier wird das Hauptfenster schon angezeigt. Alternativ OnShow verwenden.

    //Manchmal mache ich hier noch eine Zeitprüfung
    //damit der SplashScreen auch auf schnellen
    //Systemen nicht nur kurz aufblitzt, sondern
    //lesbar ist.

    //SplashScreen.Hide; //nicht notwendig
    FreeAndNil(SplashScreen);
  end;
end;
Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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