Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kann Form nicht schließen! (https://www.delphipraxis.net/74630-kann-form-nicht-schliessen.html)

sonicfire 6. Aug 2006 19:32


Kann Form nicht schließen!
 
Servus allerseits! :) Ich habe mal versucht eine Art Splashscreen via zweiter Form anzuzeigen.
Die Form zeigt er auch an, alles bestens. Ich kann sie nur zum verrecken nicht schließen!! :wall:

Code in Hauptprogramm:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
SplashScreen := TSplashScreen.Create(Form1);
SplashScreen.Show;
Code in Splashscreen-Form (Unit):
Delphi-Quellcode:
procedure TSplashScreen.Image1Click(Sender: TObject);
begin
  Close;
end;
Projekt-Code:
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.Title := 'Samplematic';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TSplashScreen, SplashScreen);
  Application.Run;
end.
Ich kann machen was ich will, entweder ich bekomme Exceptions oder das verdammte Fenster schließt sich einfach nicht. Man sieht, das es "refreshed" wird, also geschlossen und sofort wieder geöffnet :(

Hat jemadn Rat? Danke schon mal! :)

SirThornberry 6. Aug 2006 19:38

Re: Kann Form nicht schließen!
 
das ist klar. Im Create von TForm1 erzeugst du ein TSplashScreen weißt dieses auf die Variable Splashscreen zu, und lässt die Instanz auf welche Splashscreen zeigt mit ".Show" anzeigen. Nach dem dein TForm1 kreirt wurde wird in der Projektdatei eine neue Instanz von TSplashScreen erzeugt und auf die Instanz von SplashScreen zugewiesen.

Und in deinem Imageclick steht vermutlich dann nicht
Delphi-Quellcode:
Close();
sondern
Delphi-Quellcode:
SplashScreen.Close();
womit du ein Close auf das zuletzter erzeugte TSplashScreen ausführst was gar nicht angzeigt wird. Anders kanns ich mir zumindest nicht erklären.

sonicfire 6. Aug 2006 19:45

Re: Kann Form nicht schließen!
 
Öhm, danke :) Und das heisst... jetzt... ? :stupid:

SirThornberry 6. Aug 2006 19:50

Re: Kann Form nicht schließen!
 
das heißt: du müsstest erstmal sagen ob ich recht habe (ob da wirklich splashscreen.close steht). Und wenn dem so ist solltest du aus der Projektdatei das
Delphi-Quellcode:
Application.CreateForm(TSplashScreen, SplashScreen);
raus nehmen, und im Sinne der Objectorientierung aus:
Delphi-Quellcode:
Splashscreen.Close();
ein
Delphi-Quellcode:
Self.Close();
bzw.
Delphi-Quellcode:
Close();
machen.
Außerdem solltest du verstehen warum du diese Änderungen machen solltest.

Aber eben alles nur wenn ich recht hatte mit meiner Vermutung, ansonsten scheint der Fehler wo anders zu liegen.

mkinzler 6. Aug 2006 19:50

Re: Kann Form nicht schließen!
 
Es gibt 2 Instanzen der SplashForm. wenn du sie dynamisch erzeugst, solltest du die Erzeugung im Hauptprogramm abschalten.

sonicfire 6. Aug 2006 19:58

Re: Kann Form nicht schließen!
 
*Hust* - ich versteh es immer noch nicht ganz ... vor allem: wenn ich das Splash-Fenster minimiere, erscheint sofort ein neues! :shock: :oops:

mkinzler 6. Aug 2006 20:00

Re: Kann Form nicht schließen!
 
Hier erzeugst du Instanz nur 1:
Delphi-Quellcode:
Application.CreateForm(TSplashScreen, SplashScreen);
Und hier die 2.:
Delphi-Quellcode:
SplashScreen := TSplashScreen.Create(Form1);
Einmal reicht!

sonicfire 6. Aug 2006 20:16

Re: Kann Form nicht schließen!
 
Achsoo okay, verstehe! Danke! :) Allerdings ändert das leider rein gar nichts. Nach wie vor dasselbe Ergebnis :?

mkinzler 6. Aug 2006 20:22

Re: Kann Form nicht schließen!
 
Wie sieht der Code jetzt aus?

sonicfire 6. Aug 2006 20:41

Re: Kann Form nicht schließen!
 
Naja, so wie im ersten Beispiel bis auf das mit dem Application.CreateForm SplashScreen usw!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.
Seite 1 von 2  1 2      

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