Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt (https://www.delphipraxis.net/182472-splashscreen-wird-geschlossen-aber-taskleisteneintrag-bleibt.html)

devidespe 27. Okt 2014 19:04

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?

sx2008 27. Okt 2014 19:17

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:
Application.Mainform
auslesen.
Daher darf man das Splash-Formular nicht über
Delphi-Quellcode:
Application.CreateForm()
erzeugen sondern muss
Delphi-Quellcode:
Splashform := TSplashForm.Create(nil);
schreiben.

devidespe 27. Okt 2014 19:33

AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
 
Naja das mache ich ja. Im DPR wird es mit :

Delphi-Quellcode:
SplashScreenFormVar:=TSplashScreenForm.Create(nil);
erzeugt, wobei SplashScreenFormVar eine Variable in der SplashUnit.pas ist und auf

Delphi-Quellcode:
var SplashScreenFormVar : TSplashScreenForm;
verweist.

Dann wird das Formular mit

Delphi-Quellcode:
SplashScreenFormVar.Show;
im DPR erzeugt.

In FormCreate des Mainforms greife ich dann wieder auf diese Varaible zu und versuche es zu schließen:

Delphi-Quellcode:
if Assigned(SplashScreenFormVar) then SplashScreenFormVar.Free;
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.

Der schöne Günther 27. Okt 2014 19:42

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:
MainFormOnTaskBar
-Variable herumgespielt?
http://docwiki.embarcadero.com/Libra...nFormOnTaskBar

Satyr 27. Okt 2014 23:04

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*.

Sailor 28. Okt 2014 08:52

AW: SplashScreen wird geschlossen, aber Taskleisteneintrag bleibt
 
Wieso SplashScreenFormVar.Free und nicht SplashScreenFormVar.Close?

devidespe 28. Okt 2014 11:04

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 20: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