Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fenster automatisch schließen (https://www.delphipraxis.net/138539-fenster-automatisch-schliessen.html)

melssner 12. Aug 2009 09:37


Fenster automatisch schließen
 
Hallöle,

habe mal wieder eine Frage.
Ich habe ein Hauptform (Form1) wo ich unter Form.Create ein weiters Formfenster öffnen lasse mit ShowModal
Delphi-Quellcode:
    Form11:= TForm11.create(self);
    Form11.ShowModal;
    Form11.free;
    Form11 := Nil;
In dem Form11 erfolgt eine initialisierung des eigentlichen Programmes, wo Dateien geprüft werden, Webinterface gestartet, sowie Einstellungen geprüft werden. Nach Beendung der Rutine soll das Formfenster wieder automatisch geschlossen werden ohne manuelles Button klicken. Habe im Form11 schon Form11.Hide; oder Form11.OnActivate:= Button1Click; versucht, letztes verursacht ein Zugriffsfehler. Was mache ich da falsch oder wie kann ich es realisieren das es nach ablauf der Rutine automatisch wieder schließt?

Über Hilfe würde ich mich freuen

LG Mario

Luckie 12. Aug 2009 09:42

Re: Fenster automatisch schließen
 
Überleg mal, was du da eigentlich machst. Du steigst mit einem Bein ins Auto und mit dem anderen willst du gleichzeitig wieder austeigen. Das kann ja irgendwie nicht funktionieren. Entweder steigst du erst gar nicht ein, machst also die Überprüfung bevor das Formular erstellt wird, oder du steigst richtig ein und danach wieder aus. Frühste Möglichkeit wäre, glaube ich, das OnPaint Ereignis der Form.

melssner 12. Aug 2009 10:02

Re: Fenster automatisch schließen
 
Mit OnPaint im Form11 habe ich es schon versucht da geht es ja nach ablauf der Rutine zu nur ist das Fenster nicht sichtbar.

Das Fenster soll wie ein Startfenster des Programmes sein.
gibts da ni noch ne andere möglichkeit?

Lg Mario

Bernhard Geyer 12. Aug 2009 10:07

Re: Fenster automatisch schließen
 
Zitat:

Zitat von melssner
Das Fenster soll wie ein Startfenster des Programmes sein.

Such im Forum mal nach Splash. Ich denke da wirst du 100 Möglichkeiten finden wie du das realisieren kannst.

guidok 12. Aug 2009 10:24

Re: Fenster automatisch schließen
 
Du könntest zum Beispiel einen Timer auf das Formula setzen, den du nach Abschluss deine Routinen aktivierst und der im OnTimer Ereignis, nach einigen Sekunden das Fenster schließt.

patti 12. Aug 2009 11:33

Re: Fenster automatisch schließen
 
Zitat:

Zitat von Luckie
Überleg mal, was du da eigentlich machst. Du steigst mit einem Bein ins Auto und mit dem anderen willst du gleichzeitig wieder austeigen. Das kann ja irgendwie nicht funktionieren. Entweder steigst du erst gar nicht ein, machst also die Überprüfung bevor das Formular erstellt wird, oder du steigst richtig ein und danach wieder aus. Frühste Möglichkeit wäre, glaube ich, das OnPaint Ereignis der Form.

Evtl. hilft es auch, nach Abschluss der Arbeiten eine Message per PostMessage zu senden. Einfach an das "Splash"-Fenster eine WM_User-Message senden, die dann beim Ausführen das Fenster schließt. Dann solltest du keine Probleme wegen Zugriffsverletzungen mehr bekommen.

Patti

Edit:

Zitat:

Zitat von melssner
Mit OnPaint im Form11 habe ich es schon versucht da geht es ja nach ablauf der Rutine zu nur ist das Fenster nicht sichtbar.

Das Fenster soll wie ein Startfenster des Programmes sein.
gibts da ni noch ne andere möglichkeit?

Lg Mario

Okay, das habe ich wohl überlesen :oops: Wenn das so ist, dann ist eine richtige Splash-Form wohl genau das richtige...

hoika 12. Aug 2009 11:49

Re: Fenster automatisch schließen
 
Hallo,

patti hatte es schon richtig gesagt.

Den Anzeige-Code schreibst du ins FormActivate
(ein bisschen Application.ProcessMessages dazu).
und als letzte Zeile

Delphi-Quellcode:
PostMessage(Handle, WM_CLOSE, 0, 0);

Heiko


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