Delphi-PRAXiS

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!

sonicfire 6. Aug 2006 21:04

Re: Kann Form nicht schließen!
 
Gibts denn noch einen anderen Weg? Z.b. unter Verwendung von Frames? (Die habe ich bis jetzt noch gar nicht angetastet) :-D

Helmi 6. Aug 2006 21:10

Re: Kann Form nicht schließen!
 
Hallo,

versuch doch mal den Code der Schweizer: http://www.swissdelphicenter.ch/de/showcode.php?id=420

sonicfire 6. Aug 2006 21:55

Re: Kann Form nicht schließen!
 
Danke, aber so wollte ich das eigentlich nicht wirklich... aber ist erstmal schon ganz gut :)

Cyberbob 7. Aug 2006 00:24

Re: Kann Form nicht schließen!
 
Hier im Forum gibts ein Tutorial:

http://www.delphipraxis.net/internal...ect.php?t=9679

praktiker 15. Aug 2006 12:22

Re: Kann Form nicht schließen!
 
Hallo

Das Formular wird mit Show angezeigt.
Das heißt im Klartext, Formular erzeugen, Formular anzeigen, und weiter mit den Routinen im aufrufenden Programmteil.


Wenn du das Formular vom aufrufenden Programm deaktivieren möchtes,

dann gib in deinem Quelltext folgende Source zum Schließen ein.

Delphi-Quellcode:
..
procedure TForm.SchliesseSplashscreen;
begin
if (Splashscreen <> nil ) and assigned(Splashscreen) then
begin
 SplashScreen.hide;  // Fenster nicht sichtbar machen / verstecken.
 SplasScreen.close;
 SplashScreen.free;
 SplashScreen:=nil;
end;
end;


Wenn du im Formular Splashscreen auf Tastendruck reagieren willst,
dann
Schau dir mal bei den Ereignissen Onclose an.

Und hier speziell die Variable Action:TCloseAction;
Ist in der Hilfe beschrieben

:cheers:

[edit=Phoenix]Delphi-Tags hinzugefügt. Bitte das nächste mal selber machen. Mfg, Phoenix[/edit]

DP-Maintenance 15. Aug 2006 12:31

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Eigentlich gehts hier auch mehr ums TForm, also um die VCL.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 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