![]() |
SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Hallo,
ich erzeuge einen SplashScreen direkt am Anfang der DPR-Datei, um über den Fortschritt der Startinitialisierung zu informieren. Wenn ich den SplashScreen mit Free kurz vor Application.CreateForm schließe, verschwindet dessen Eintrag aus der Taskleiste und der reguläre Eintrag des Programms wird erzeugt. Soweit alles gut. Nun habe ich aber in der FormCreate Prozedur des Hauptformulars auch noch einige Dinge zu tun, weswegen ich das Schließen des SplashScreens am Ende von FormCreate durchführen wollte, den SplashScreen quasi von der DPR-Datei ins Mainform übernehmen. Das klappt auch erstmal, allerdings bleibt ein leerer Taskleisten-Eintrag zurück, der auch nicht weggeht. Zusätzlich zu diesem kommt der reguläre Eintrag des Mainforms hinzu. Woran kann das liegen, bzw. wie kann ich einen SplashScreen im DPR erzeugen und am Ende des FormCreate schließen, ohne doppelte Taskleisteneinträge zu generieren? |
AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Das 1. Formular dass mit Application.CreateForm erzeugt wird wird automatisch zum MainForm.
Man kann das über das readonly Property
Delphi-Quellcode:
auslesen.
Application.Mainform
Daher darf man das Splash-Formular nicht über
Delphi-Quellcode:
erzeugen sondern muss
Application.CreateForm()
Delphi-Quellcode:
schreiben.
Splashform := TSplashForm.Create(nil);
|
AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Naja das mache ich ja. Im DPR wird es mit :
Delphi-Quellcode:
erzeugt, wobei SplashScreenFormVar eine Variable in der SplashUnit.pas ist und auf
SplashScreenFormVar:=TSplashScreenForm.Create(nil);
Delphi-Quellcode:
verweist.
var SplashScreenFormVar : TSplashScreenForm;
Dann wird das Formular mit
Delphi-Quellcode:
im DPR erzeugt.
SplashScreenFormVar.Show;
In FormCreate des Mainforms greife ich dann wieder auf diese Varaible zu und versuche es zu schließen:
Delphi-Quellcode:
Das funktioniert problemlos, wenn ich die gleiche SplashScreen-Erzeugung in FormCreate verwende, ich benötige aber einen SplashScreen im DPR vor der Erzeugung der Mainform.
if Assigned(SplashScreenFormVar) then SplashScreenFormVar.Free;
|
AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Ich habe es nie ganz durchschaut, deshalb nur als spontane Idee: Hast du mal an der
Delphi-Quellcode:
-Variable herumgespielt?
MainFormOnTaskBar
![]() |
AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Ich hatte diesen Fehler auch einige male.
Einmal lag es daran das ich Application.Initialize vor Splash.Show angegeben hatte statt danach und einmal hat es geholfen vor Splash.free das Fenster mit Splash.hide zu verbergen. Warum letzteres half habe ich nicht ganz verstanden, war aber froh drüber *g*. |
AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Wieso SplashScreenFormVar.Free und nicht SplashScreenFormVar.Close?
|
AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
Hallo,
beides hilft leider nicht, Application.Initialize wird nach dem SplashScreen ausgeführt, und auch ein Hide vor dem Free/Close hilft nicht. Was aber hilft, ist das Setzen von Application.MainFormOnTaskbar auf False. Dann verschwindet das Fenster wieder. In der Hilfe steht aber, dass diese Variable auf True gesetzt sein muss, um die Aero-Effekte ab Windows Vista verwenden zu können. Aber trotzdem funktioniert etwa Flip 3D, hier unter Windows 7. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz