Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   VCL: Application.Run() mehrmals ausführen (https://www.delphipraxis.net/181238-vcl-application-run-mehrmals-ausfuehren.html)

Der schöne Günther 28. Jul 2014 17:08

VCL: Application.Run() mehrmals ausführen
 
Mir fallen keine schlauen Suchbegriffe ein, die Frage wurde bestimmt schon oft gestellt. *

VCL, XE5. Kann ich in einem Windows-Projekt mehrmals ein
Delphi-Quellcode:
Application.Run()
haben? Anscheinend nicht, denn wenn das Hauptformular geschlossen worden ist, ist
Delphi-Quellcode:
Application.Terminated = True
. Und ein zweiter Aufruf von
Delphi-Quellcode:
Run()
springt dann direkt raus. Und die Property Terminated ist nur lesbar, nicht änderbar.
Somit habe ich mir meine Frage mit "Nein, geht nicht" eigentlich schon beantwortet, oder?

Dazu die Frage: Was habe ich durch Application.Run() eigentlich gewonnen? Ja, ich könnte eine halbe Stunde lang im Sourcecode wühlen. Aber kann ich nicht genauso gut ein Formular (modal) zeigen, meinetwegen einen Exception-Handler drumlegen und gut ist?

(Ich habe kein konkretes Ziel. Ich frage nur.)


* Leicht verwandte Themen sind

himitsu 28. Jul 2014 17:13

AW: VCL: Application.Run() mehrmals ausführen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1266832)
Somit habe ich mir meine Frage mit "Nein, geht nicht" eigentlich schon beantwortet, oder?

Jupp.

Application.Run führt praktisch das Application.ProgressMessages so oft aus, bis das Programm beendet wurde
und wenn es beendet wurde, dann ist halt Schluß.


Gegenfrage: Wenn das Programm beendet wurde, wieso sollte es dannoch mal starten?
Oder was genau willst du eigentlich erreichen?

Wenn du nicht willst, daß sich dein Programm beendet, dann unterbinde das Beenden
und versuch nicht nochmal loszufahren, nachdem du bereits gegen die Wand gerausch bist.

Der schöne Günther 28. Jul 2014 17:20

AW: VCL: Application.Run() mehrmals ausführen
 
Ich möchte in einem Projekt einen blockierenden Aufruf (wie
Delphi-Quellcode:
Application.Run()
) solange die Oberfläche offen ist. Dann (ohne Oberfläche) weitermachen und schließlich eine andere Oberfläche öffnen und den Benutzer darauf rumhoppeln lassen bis er sie schließt.

Tausche ich das
Delphi-Quellcode:
Application.Run()
nun einfach gegen ein
Delphi-Quellcode:
gewünschteForm.ShowModal()
sehe ich als Laie keinen Unterschied. Außer dass ich es mehrmals tun kann. Nun warte ich auf einen Guru der mir sagt, in was für Gefahren ich mich hierbei begebe.

Der schöne Günther 29. Jul 2014 18:45

AW: VCL: Application.Run() mehrmals ausführen
 
Forenregeln-konformes * p u s h * dieses Beitrags nach über 24 Stunden:

Lebe ich sicher, wenn ich statt
Delphi-Quellcode:
Application.Run()
einfach sage
Delphi-Quellcode:
meineForm.ShowModal()
?

DSP 29. Jul 2014 20:48

AW: VCL: Application.Run() mehrmals ausführen
 
Hier im Forum suchenShellExecute

himitsu 29. Jul 2014 20:56

AW: VCL: Application.Run() mehrmals ausführen
 
Eine VCL-Form-Anwendung hat immer ein Fenster.
Gut, man kann das (Haupt)Fenster zwar auch ausblenden, aber es gibt dennoch immer Eines.
Und wenn es unbedingt sein muß, dann kann man die "Mainform" auch austauschen und durch eine Andere ersetzen,
aber dennoch gibt es immer irgendwo mindestens ein Fenster.

Dejan Vu 30. Jul 2014 07:05

AW: VCL: Application.Run() mehrmals ausführen
 
Schreib deine Anwendung doch einfach so, das Du gar nicht in Gefahr gerätst, das Universum in einer Dimensionsfalte verschwinden zu lassen.

Dein Hauptformular ist das erste Fenster. Beim Schließen rufst du im OnClose das zweite Fenster auf, das erstmal rödelt und dann angezeigt wird. Hier kann der "Benutzer dann darauf rumhoppeln lassen bis er sie schließt".

Oder dein Hauptformular zeigt im OnActivate das erste Fenster. Nach dem Schließen rödelt es erstmal rum und zeigt sich dann. Hier kann der "Benutzer dann darauf rumhoppeln lassen bis er sie schließt".

PS: Es gibt bestimmt geeignetere Events, die Formulare anzeigen zu lassen. Aber der Sinn ist klar, denke ich.


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