![]() |
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:
haben? Anscheinend nicht, denn wenn das Hauptformular geschlossen worden ist, ist
Application.Run()
Delphi-Quellcode:
. Und ein zweiter Aufruf von
Application.Terminated = True
Delphi-Quellcode:
springt dann direkt raus. Und die Property Terminated ist nur lesbar, nicht änderbar.
Run()
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 |
AW: VCL: Application.Run() mehrmals ausführen
Zitat:
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. |
AW: VCL: Application.Run() mehrmals ausführen
Ich möchte in einem Projekt einen blockierenden Aufruf (wie
Delphi-Quellcode:
) 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.
Application.Run()
Tausche ich das
Delphi-Quellcode:
nun einfach gegen ein
Application.Run()
Delphi-Quellcode:
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.
gewünschteForm.ShowModal()
|
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:
einfach sage
Application.Run()
Delphi-Quellcode:
?
meineForm.ShowModal()
|
AW: VCL: Application.Run() mehrmals ausführen
|
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. |
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 11:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz