Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Tutorial: Splash Screens (https://www.delphipraxis.net/8637-tutorial-splash-screens.html)

sakura 9. Sep 2003 12:57


Tutorial: Splash Screens
 
Hi DPler,

immer wieder kommt die Frage danach, wie Splash Screens bzw. "Startbildschirmen" gemacht werden können. Also, die Implementierung ist einfacher, als viele es glauben wollen.

Folgend meine zwei beliebtesten Methoden, Splash Screens zu implementieren.

Dabei ist die grundlegende Vorgehensweise immer identisch. Zum Üben einfach mal mitmachen und dann die präferierte Methode annehmen ;-)

Let's roll!

Delphi starten und eine neue Anwendung erstellen. Die Anwendung und das Hauptformular an gewünschter Stelle auf der Festplatte speichern. Anschließend im Objekt Inspektor dem Hauptformular einen beliebigen Namen geben. In den Bespielen heißt dieses frmMain. Damit wir bei unserer Super-Beispiel-Anwendung auch mal einen "vernünftigen" Grund für einen Splash-Screen erzwingen, folgenden Code in das OnCreate-Ereignis einfügen.

Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Sleep(1500);
end;
Dann noch einen Button aufs Form werfen und folgenden Code in des OnClick-Ereignis einfügen.

Delphi-Quellcode:
procedure TfrmMain.btnBoahClick(Sender: TObject);
begin
  Close;
end;
Soweit die Vorbereitung auf Seiten des Hauptformulars. Jetzt gehts an den Splash Screen. Dazu erstellen wir ein neues Formular und speichern auch dieses. Als Namen im Objekt Inspektor bitte frmSplash eingeben (damit die Beispiele funktionieren). Ansonsten ist der natürlich auch frei wählbar.

Jetzt das Splash Formular nach belieben "stylen" und weiter gehts. Im folgenden Beispiel ist einfach ein hübsches Bildchen zu sehen ;-)

Weiter gehts. Folgend zu den beiden Standard-Methoden.
  • Der nächste Abschnitt erklärt, wie man das Splash-Form dazu bringt mind. 3 Sekunden zu bleiben und mindestens so lange, bis die Anwendung vollständig initialisiert wurde.
  • Der übernächste Abschnitt zeigt, wie der Splash Screen solange zu sehen ist, bis der User auf den "Starten" Schalter geklickt hat. Dieses kann er natürlich erst dann tun, wenn die Anwendung vollständig initialisiert ist.

Anschließend kommt der Teil im Projekt, welcher wieder identisch für alle Lösungen ist.

...:cat:...

sakura 9. Sep 2003 12:57

Re: Tutorial: Splash Screens
 
Bitte warten Sie, während die Anwendung startet...

Um dieses Verhalten zu erreichen, müssen wir zwei Dinge tun. Erstens, das Splash-Formular muss "wissen", wann alle Vorbereitungen zum Start getroffen wurden, und zweitens, das Splash-Formular muss "wissen", wann die drei Sekunden abgelaufen sind.

Punkt 1

Dazu legen wir einfach eine Eigenschaft an, welche den Typ Boolean hat und den Status der Anwedung speichert. Wenn der Status geändert wird, versuchen wir das Splash-Form zu schließen.

Delphi-Quellcode:
type
  TfrmSplash = class(TForm)
    ...
  private
    { Private declarations }
    FInitializationDone: Boolean;
    procedure SetInitializationDone(const Value: Boolean);
    ...
  public
    { Public declarations }
    property InitializationDone: Boolean read FInitializationDone write SetInitializationDone;
    ...
  end;

procedure TfrmSplash.SetInitializationDone(const Value: Boolean);
begin
  FInitializationDone := Value;
  Close;
end;
Ausserdem fügen wir noch einen TTimer auf das Formular ein, setzen das Intervall auf 3000 (3 Sekunden) und stellen sicher, daß Enabled auf True gesetzt ist. Im OnTimer Ereignis disablen wir den Timer (es müssen ja nur die ersten 3 Sekunden abgelaufen sein ;-) ) und versuchen wiederum das Form zu schließen.

Delphi-Quellcode:
procedure TfrmSplash.tmrMinTimingTimer(Sender: TObject);
begin
  tmrMinTiming.Enabled := False;
  Close;
end;
Jetzt zum "Trick"

Wann kann der Splash Screen nun wirklich geschlossen werden? Eigentlich doch nur dann, wenn die Anwendung geladen wurde und wenn die drei Sekunden abgelaufen sind. Das lässt sich recht einfach überprüfen. Ersteres daran, das die Variabe FInitializationDone den Wert True hat und letzteres daran, daß der Timer disabled ist. Dazu einfach folgenden Code in das OnCloseQuery-Ereignis schreiben.

Delphi-Quellcode:
procedure TfrmSplash.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := (not tmrMinTiming.Enabled) and FInitializationDone;
end;
Wie es weiter geht, steht im übernächsten Abschnitt. ;-)

...:cat:...

sakura 9. Sep 2003 12:58

Re: Tutorial: Splash Screens
 
Ich habe fertig, Sie können loslegen...

Ein anderer, hin und wieder gesehener Weg ist es, den User den Splash-Screen manuell ausblenden zu lassen. Sei es, um auf ShareWare Konditionen hinzuweisen oder um ihn einfach zu ärgern :evil:

Der Weg ist ähnlich dem vorhergehenden, allerdings brauchen wir keinen Timer.

Dazu benötigen wir wieder eine Variable, welche den Status des allgemeinen Ladevorganges sichert.

Delphi-Quellcode:
type
  TfrmSplash = class(TForm)
    ...
  private
    { Private declarations }
    FInitializationDone: Boolean;
    procedure SetInitializationDone(const Value: Boolean);
    ...
  public
    { Public declarations }
    property InitializationDone: Boolean read FInitializationDone write SetInitializationDone;
    ...
  end;

procedure TfrmSplash.SetInitializationDone(const Value: Boolean);
begin
  FInitializationDone := Value;
  if Value then
  begin
    btnStart.Enabled := True;
    btnStart.Cursor := crHandPoint;
  end else begin
    btnStart.Enabled := False;
    btnStart.Cursor := crHourGlass;
  end;
end;
Sobald die Initialisierung beendet ist, kann der User über einen Schalter das Formular schliessen. Dieser sollte im Objekt Inspektor standardmäßig Enabled auf False gesetzt sein ;-) In das OnClick-Ereignis des Buttons wird noch folgender Code geschrieben.

Delphi-Quellcode:
procedure TfrmSplash.btnStartClick(Sender: TObject);
begin
  Close;
end;
Fertig. Der Rest im nächsten Abschnitt.

...:cat:...

sakura 9. Sep 2003 12:58

Re: Tutorial: Splash Screens
 
Das Splash laden und schließen

Ab hier ist der Vorgang wieder für beide Methoden identisch. In das Splash-Formular sollte jetzt noch das OnClose-Ereignis behandelt werden. Damit wir uns nicht um die Resourcen und den Speicherverbrauch sorgen müssen, reichen folgende Zeilen.

Delphi-Quellcode:
procedure TfrmSplash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frmSplash := nil;
end;
Damit wird dem Formular mitgeteilt, daß es sich selbst zerstören soll. Außerdem setzen wir noch die globale Formvariable wieder auf nil (just in case...).

Die Anwendung selbst

Wenn Ihr jetzt mal das Code-Fenster der Anwendung ladet, dann seht ihr am Ende folgenden Code

Code:
begin
  Application.Initialize;
  Application.CreateForm(TfrmMain, frmMain);
  [color=#0000FF]Application.CreateForm(TfrmSplash, frmSplash);[/color]
  Application.Run;
end.
Die blau dargestellte Zeile ist unter Umständen nicht vorhanden. Das hängt von Euren Einstellungen ab. Sollte diese da sein, einfach löschen!

Genug der Vorworte. Lasst es uns tun. Hier die Theorie, unten die Implementierung. Wir müssen dazu den Startablauf unseres Programmes ein wenig manipulieren. Als erstes müssen wir das Splash-Form erstellen, aber so, daß die Anwendung dieses nicht als Hauptformular erkennt. Ansonsten würde die Anwendung sich schließen, sobald das Splash-Form freigegeben wird :oops:

Anschließend müssen wir das Splash-Form dazu bringen sich darzustellen und es "zwingen" sich neu zu zeichnen, ansonsten wird es wohl nur ein graues Rechteck zu sehen geben.

Jetzt wird die Anwedung gestartet und sämtliche Formulare und Datenmodule geladen. Abschließend setzen wir die Eigenschaft frmSplash.InitializationDone auf True und überlassen die Anwendung dem Benutzer.

Delphi-Quellcode:
begin
  frmSplash := TfrmSplash.Create(Application);
  try
    frmSplash.Show;
    frmSplash.Refresh;
    Application.Initialize;
    Application.CreateForm(TfrmMain, frmMain);
    // (1)
    // weitere Formulare und Datenmodule hier her verschieben (siehe 2)
  finally
    frmSplash.InitializationDone := True;
  end;
  // (2)
  // Standardmäßig erstellte Formulare wird Delphi hier eintragen
  // nach (1) verschieben !!!
  Application.Run;
end.
Fertig!

...:cat:...

sakura 9. Sep 2003 13:00

Re: Tutorial: Splash Screens
 
Liste der Anhänge anzeigen (Anzahl: 4)
Die Beispiele

Hier findet Ihr noch die Beispiele zum Tutorial.
  • Sample App I (Bin).zip Die Exe-Demo zum automatischen Ausblenden des Splash-Screens.
  • Sample App I (Sources).zip Die Quellcodes zum automatischen Ausblenden des Splash-Screens.
  • Sample App II (Bin).zip Die Exe-Demo zum manuellen Ausblenden des Splash-Screens.
  • Sample App II (Sources).zip Die Quellcodes zum manuellen Ausblenden des Splash-Screens.

...:cat:...

Stevie 28. Okt 2003 08:58

Re: Tutorial: Splash Screens
 
Coole Sache das! Thx Sakura!
Ich hab nur eine kleine Anmerkung/Frage:
Wie mache ich das denn, dass ich, solange der Splah Screen angezeigt wird, nicht auf die Anwendung zugreifen kann? (In deinen Beispielen kann ich die Anwendung schließen, wenn der Splash Screen noch angezeigt wird)

sakura 28. Okt 2003 09:08

Re: Tutorial: Splash Screens
 
Hi Stevie,

dazu musst Du die Hauptanwendung (die DPR-Datei) von Beispiel einfach wie folgend erweitern und lediglich die grünen Zeilen einfügen.

Code:
begin
  frmSplash := TfrmSplash.Create(Application);
  try
    frmSplash.Show;
    frmSplash.Refresh;
    Application.Initialize;
    Application.CreateForm(TfrmMain, frmMain);
  finally
    frmSplash.InitializationDone := True;
  end;
  [color=#008000]while frmSplash <> nil do
    Application.ProcessMessages;[/color]
  Application.Run;
end.
...:cat:...

Stevie 28. Okt 2003 09:22

Re: Tutorial: Splash Screens
 
Noch nicht ganz das, was ich wollte. :wink:
Jetzt wird nämlich das Hauptfenster erst erstellt, wenn der Splash Screen weg ist!
Er soll schon zu sehen sein, eben nur nicht Anwählbar (vielleicht irgendwie SplashScreen.ShowModal?!)
Und noch ne andere Sache:
Wie kann ich während der Initialisierung der Anwendung die Anzeige des SplashScreen ändern?
(sowas wie ein Text im Fuß des Splash Screens "Anwendung wird geladen..." ändern in "Konfiguration wird geladen..." usw. ???)

sakura 28. Okt 2003 09:38

Re: Tutorial: Splash Screens
 
Okay, dann wäre noch folgende Lösung anzubieten. Dabei nicht vergessen, die vorhergehenden Änderungen wieder rückgängig zu machen!

Im Objekt Inspektor setzt Du die Eigenschaft Enabled des Hauptformulares auf False. Im Splash-Form im OnClose Ereigniss setzt Du diese dann wieder auf True:

Code:
implementation

[color=#008000]uses
  uFormMain;[/color]

{$R *.dfm}

procedure TfrmSplash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frmSplash := nil;
  [color=#008000]frmMain.Enabled := True;[/color]
end;
Zum zweiten: Du musst einfach ein Label aufs Splash-Form setzen (ggf. Transparent machen) und dessen Caption neu setzen. Anschließend mußt Du die Methode Refresh des Splash-Forms aufrufen.

...:cat:...

Stevie 28. Okt 2003 09:57

Re: Tutorial: Splash Screens
 
Ok, klappt, ich hab's so gemacht:
Code:
implementation

{$R *.dfm}

[color=#008000]uses
  uFormSplash;[/color]

procedure TfrmMain.btnBoahClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Sleep(1500);
  [color=#008000]frmSplash.Label1.Caption := 'Initializing...';[/color]
end;

end.

sakura 28. Okt 2003 10:01

Re: Tutorial: Splash Screens
 
Sicher ist sicher, folgende Zeile noch einfügen:

Code:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Sleep(1500);
  frmSplash.Label1.Caption := 'Initializing...';
  [color=#008000]frmSplash.Refresh;[/color]
end;
...:cat:...

Stevie 28. Okt 2003 10:42

Re: Tutorial: Splash Screens
 
Wann wird der Splash Screen den nicht neu gezeichnet?

sakura 28. Okt 2003 11:30

Re: Tutorial: Splash Screens
 
Zitat:

Zitat von Stevie
Wann wird der Splash Screen den nicht neu gezeichnet?

Ja, aber ansonsten kann es passieren, daß das Label nicht neu gezeichnet wird.

...:cat:...

Stevie 28. Okt 2003 11:56

Re: Tutorial: Splash Screens
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Stevie
Wann wird der Splash Screen den nicht neu gezeichnet?

Ja, aber ansonsten kann es passieren, daß das Label nicht neu gezeichnet wird.

...:cat:...

Frage: Wann? -> Antwort: Ja -> :gruebel: :wiejetzt: :roll:

Ich wollte doch nur wissen, wann das denn der Fall sein kann, dass das Label nicht neu gezeichnet wird!? :-D

sakura 28. Okt 2003 12:34

Re: Tutorial: Splash Screens
 
Sorry :oops: Wenn Dein Programm mehr macht als nur Zeit verstreichen zu lassen. Also wenn der SplashScreen angezeigt wird und im Hintergrund wirklich die Anwendung geladen wird, Daten analysiert, etc. ;-) Der SplashScreen wird nur dann neu gezeichnet, wenn die Anwendung gerade nichts tut ("ThreadState" ist idle).

...:cat:...

Stevie 28. Okt 2003 12:39

Re: Tutorial: Splash Screens
 
Ahhh, richtig! :idea:
Jetzt wird mir auch klar, warum manchmal ein Programm seine GUI nicht updatet, wenn es ausgelastet ist! Danke sakura! *streichel*

PlanetofBlade 27. Nov 2003 14:25

Re: Tutorial: Splash Screens
 
Hi,

erst ma n1 zum Tutorial. Hat sofort funktioniert, als ich es einbaute, aber ;)


Ich erstelle hinter dem Splash Screen andere Formulare

Delphi-Quellcode:
    Application.CreateForm(TdasFormular, dasFormular);
    dasFormular.Free;
Jenes Formular wird von mir nach dem Create sofort wieder gefreeed, sodass es eigentlich nicht zu einem Zeichnen des Formulars kommen kann, aber trotzdem sehe ich ein graues Fenster das kurz zuckt, also sich anzeigt und sich dann closed!

Also mein Splash - Screen sollte halt vor allem Modal sein, was im Hintergrund passiert!
Ich versteh das halt nicht warum da das Fenster angezeigt wird, aber ich es erstens Visible := FALSE gesetz habe und zweitens ich es eigentlich gar nicht zum zeichnen auffordere, also mit

Delphi-Quellcode:
    dasFormular.Show;
Need Help :)

tHx schon ma!

gReetz PlaneT

sakura 27. Nov 2003 14:32

Re: Tutorial: Splash Screens
 
Gegen das "aufblitzen" des Forms kann ich Dir nicht helfen, aber den Splash könntest Du mit FormStykle zu fsStayOnTop im ObjectInspector nachhelfen ;-)

...:cat:...

PlanetofBlade 27. Nov 2003 14:35

Re: Tutorial: Splash Screens
 
Supi, des funtzt!

tHx nochma für die Hilfe und dein schnelles reagieren :thuimb:

sakura 27. Nov 2003 14:35

Re: Tutorial: Splash Screens
 
Zitat:

Zitat von PlanetofBlade
Supi, des funtzt!

:firejump:

Zitat:

Zitat von PlanetofBlade
tHx nochma für die Hilfe und dein schnelles reagieren :thuimb:

Ich war gerade da ;-)

...:cat:...

PlanetofBlade 28. Nov 2003 13:18

Re: Tutorial: Splash Screens
 
Hi schonwieder :P

Wie gesagt funtzt das ja alles, nur wenn die andren Formulare im Hintergrund erstellt werden blitzt die Taskbar kurz auf und verschwindet dann wieder, sodass das Flag im Formular fsStayOnTop wieder greift!

Kann man das so machen das die Taskbar ganz unsichtbar gemacht wird?

sakura 28. Nov 2003 13:42

Re: Tutorial: Splash Screens
 
Das hat nichts direkt mit den Splash-Screens zu tun. Stelle diese Frage einfach mal seperat im Forum, damit auch die richtigen vorbeischauen...

...:cat:...

canada 8. Mär 2004 18:07

Re: Tutorial: Splash Screens
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi erstmal,

ich habe dieses auch erstmal an einem neuen Proggi getestet wo es auch auf anhieb ging, bloß wo ich jetzt in ein älteres vorhandenes einbauen wollte geht es nicht.
a) es vertrag sich in der Form net mit einer anderen aktion
oder
b) ich bin zu blöd :roll:

Picture gibts hier
(s. Anhang)


Überhaupt gleich mal ne andere Frage mit. Ist es normal das wenn man ein Proggi bastelt das dass auf jedem Rechner immer total anders aussieht??
Hab nähmlich mal Zuhause etwas für die Schule gemacht und als ich das dann in der Schule für den letzten Schliff öffnen wollte hats mich vom Stuhl gehauen, da war alles total verschoben, ..., ist doch net normal oder:?: :?:

thx :!:

[edit=Admin]So große Bilder bitte nicht direkt einbinden, sondern als Anhang hinterlegen. Mfg, Daniel[/edit]

fkerber 8. Mär 2004 19:06

Re: Tutorial: Splash Screens
 
Hi!

Ich vermute mal, du hast die Splash-Screen-Form jetzt nicht erstellt, oder?


Ciao fkerber

P.S. so riesen-Bilder bitte als Anhang...

sakura 9. Mär 2004 08:23

Re: Tutorial: Splash Screens
 
1. Das Splash-Form sollte in der DPR - Datei, nicht in der Form-Datei dargestellt werden.

2. Die Datei des Form muß in der Uses-Klausel aufgenommen werden.

...:cat:...

canada 9. Mär 2004 15:36

Re: Tutorial: Splash Screens
 
Zitat:

P.S. so riesen-Bilder bitte als Anhang...
wird net mehr vorkommen!

und danke für eure schnellen Antworten


jetzt habe ich so weit das es zu kompilieren geht, aber die Datei am ende Fehlerhaft ist, ich kann andere Forms net mehr öffen, immer wenn ich den dazu gehörigen Button anklick bekomme ich einen Fehlermeldund, "Speicher an XYZ fehlerhaft".
Desweiteren ist da die Leiste mit den Minimieren/ Verkleinern/ Schließen zusehen mit vorhanden.

lorenz 9. Mär 2004 16:10

Re: Tutorial: Splash Screens
 
Zitat:

Zitat von canada
Desweiteren ist da die Leiste mit den Minimieren/ Verkleinern/ Schließen zusehen mit vorhanden.

Hallo canada, die bekommt man mit BorderStyle:=bsNone weg. (sh. OI) :)

MfG

Lorenz

Die Muhkuh 9. Mär 2004 16:37

Re: Tutorial: Splash Screens
 
Hi Mieze,


cooles Tut. Aber leider "fehlt" mir da noch was. Manche Programme haben im SplashScreen so nen Ladenbalken und oberdrüber ein Label. Beim Label steht drin was das Programm grad macht (z.B. einstellungen laden,...) und im Ladebalken steht der Fortschritt.

Wie wird den sowas realisiert?

canada 9. Mär 2004 17:19

Re: Tutorial: Splash Screens
 
Zitat:

Hallo canada, die bekommt man mit BorderStyle:=bsNone weg.
danke, gleichmal irgendwo mir vermerken 8)

shmia 9. Mär 2004 17:37

Re: Tutorial: Splash Screens
 
Im Konstruktor des Splash-Forms Sollte Folgendes stehen:

Delphi-Quellcode:
function RunningInDelphi: Boolean;
begin
   Result := DebugHook <> 0;
end;


procedure TfrmSplash.FormCreate(Sender: TObject);
begin
   if RunningInDelphi then
      FormStyle := fsNormal    
   else
      FormStyle := fsStayOnTop;
end;
Beim Debuggen mit Delphi wird so verhindert, dass sich der
Splash-Screen über die Delphi-IDE legt. :hello:

canada 10. Mär 2004 07:39

Re: Tutorial: Splash Screens
 
also ich habe es jetzt soweit hin bekommen das es mit dem Splash geht, es kommt und dann öffnet sich die hauptform(Hauptdatei), bloß habe ich im hauptfromular auch den folgenden Code enthalten
Code:
procedure TfrmMain.Button3Click(Sender: TObject);
begin
 Form3.ShowModal;
end;
bloß geht das net, er kompiliert es aber, wenn ich deie entsprechenden Button auswähle erhalte ich immer einen Speicherfehler an XYZ "0000000".

aber der Rest geht einwandfrei, die anderen Form`s.

Bild füge ich später bei, geht zur Zeit bloß net (Schule).

thx :!:

Phoenix 10. Mär 2004 07:45

Re: Tutorial: Splash Screens
 
Zitat:

Zitat von canada
Code:
procedure TfrmMain.Button3Click(Sender: TObject);
begin
   Form3.ShowModal;
end;
bloß geht das net, er kompiliert es aber, wenn ich deie entsprechenden Button auswähle erhalte ich immer einen Speicherfehler an XYZ "0000000".

Hast Du in der Projektdatei (oder im Formular) vorher auch mit
Delphi-Quellcode:
Form3 := TForm3.Create(application);
gemacht (will heissen: Das Formular erzeugt), bevor Du versuchst es anzuzeigen?

canada 10. Mär 2004 07:51

Re: Tutorial: Splash Screens
 
danke :!: das war es, ...

canada 10. Mär 2004 12:20

Re: Tutorial: Splash Screens
 
naja, ich bins nochmal :wink:

noch eine letzte Frage, wie mach ich das bzw. was muss ich ändern wenn ich das splash auch sehen will wenn ich die Form3 öffne?!

(post oben drüber)

lorenz 10. Mär 2004 13:13

Re: Tutorial: Splash Screens
 
Hallo Canada,

Ja nicht mit StayOnTop? :gruebel:

MfG

Lorenz

Phoenix 10. Mär 2004 13:18

Re: Tutorial: Splash Screens
 
Vorher (also vor Form3.Show) den Splashscreen erzeugen, anzeigen und nach dem Show wieder zerstören. - Halt aus der Unit raus aber mit demselben Code wie in der Projektdatei.

canada 10. Mär 2004 15:03

Re: Tutorial: Splash Screens
 
Phoenix das geht bei mir trotzdem net, allg. oder ich hab wieder einen schönheits Fehler mit drinne ...
könntest du dir das mal anschauen, wäre ganz net :!:

Unplugged 22. Jul 2004 23:46

Re: Tutorial: Splash Screens
 
Hi, ich hab leider auch ein Problem mit meinem Splashscreen

Der Splashscreen enthält eine Progressbar, die anzeigt inwieweit das Programm seine Daten vorbereitet hat. Die Daten werden dabei im Hauptformular aufbereitet über OnCreate. Nur leider erhalte ich immer eine EExternalException und verstehe nicht wo das Problem ist

Delphi-Quellcode:
begin
 try
  Splash := TSplash.Create(Application);
  Splash.Show;
  Application.Initialize;
  Splash.Update;
  Application.CreateForm(TForm1, Form1);
 finally
    Splash.Hide;
    Splash.Release;
 end;
  Application.Run;
end.
Delphi-Quellcode:
//Hauptformular
procedure TForm1.FormCreate(Sender: TObject);
begin
...
// von hier aus wird die Progressbar und ein Label des Splashscreens gesteuert
end;
Die Unit des Splashscreens enthält keine Funktionen/Ereignisse

Hoffe jemand kann mir weiterhelfen, Danke

fkerber 23. Jul 2004 06:38

Re: Tutorial: Splash Screens
 
Hi!

Wann genau tritt den die Exception auf?
In welcher Zeile tritt sie auf?
Was steht in der OnCreate des Haupformulars drin?

Ciao fkerber

Unplugged 23. Jul 2004 12:31

Re: Tutorial: Splash Screens
 
oh man bin ich ein Trottel, es lang lediglich an einem TRegistry.Free, was ausversehen anstelle ans Ende des OnCreate, mitten hinein gelangte. Nach dieser Zeile wurde aber noch auf die Registry zugriffen wodurch dann diese Exception ausgelöst wurde.
War vielleicht gestern schon zu spät für nen klaren Kopf ;)

Danke && Greetz


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.
Seite 1 von 3  1 23      

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