AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VCL: Application.Run() mehrmals ausführen

Ein Thema von Der schöne Günther · begonnen am 28. Jul 2014 · letzter Beitrag vom 30. Jul 2014
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

VCL: Application.Run() mehrmals ausführen

  Alt 28. Jul 2014, 18:08
Mir fallen keine schlauen Suchbegriffe ein, die Frage wurde bestimmt schon oft gestellt. *

VCL, XE5. Kann ich in einem Windows-Projekt mehrmals ein Application.Run() haben? Anscheinend nicht, denn wenn das Hauptformular geschlossen worden ist, ist Application.Terminated = True . Und ein zweiter Aufruf von 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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 28. Jul 2014, 18:13
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

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

  Alt 28. Jul 2014, 18:20
Ich möchte in einem Projekt einen blockierenden Aufruf (wie 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 Application.Run() nun einfach gegen ein 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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

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

  Alt 29. Jul 2014, 19:45
Forenregeln-konformes * p u s h * dieses Beitrags nach über 24 Stunden:

Lebe ich sicher, wenn ich statt Application.Run() einfach sage meineForm.ShowModal() ?
  Mit Zitat antworten Zitat
DSP

Registriert seit: 10. Jul 2014
49 Beiträge
 
#5

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

  Alt 29. Jul 2014, 21:48
Hier im Forum suchenShellExecute
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 29. Jul 2014, 21:56
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

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

  Alt 30. Jul 2014, 08:05
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.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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