Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Splashscreen - Anwendung schließen (https://www.delphipraxis.net/98221-splashscreen-anwendung-schliessen.html)

Svenkan 23. Aug 2007 12:03


Splashscreen - Anwendung schließen
 
Hey!
Ich habe eine Passwortabfrage zum Starten des Programms eingebaut, welche ggf. beim Start während des Splash-Screens angezeigt wird.
Wird diese nun per Klick auf 'Abbrechen' verweigert, soll das komplette Programm geschlossen werden.
Ich habs schon mit FreeAndNil, .Close, .Free versucht, aber nichts hat geholfen. Die Hauptform wird aber trotzdem geöffnet.

Gollum 23. Aug 2007 12:30

Re: Splashscreen - Anwendung schließen
 
Hallo,

evtl. hilft dir Application.Terminate weiter.

messie 23. Aug 2007 12:32

Re: Splashscreen - Anwendung schließen
 
Oder der Holzhammer:
Delphi-Quellcode:
HALT;
Grüße, Messie

Svenkan 23. Aug 2007 12:33

Re: Splashscreen - Anwendung schließen
 
Jep, danke. ;)

Die Muhkuh 23. Aug 2007 13:00

Re: Splashscreen - Anwendung schließen
 
Wobei man halt nicht verwenden sollte...

shmia 23. Aug 2007 14:53

Re: Splashscreen - Anwendung schließen
 
Zitat:

Zitat von Gollum
evtl. hilft dir Application.Terminate weiter.

Das ist die richtige Methode.
Aber die Anwendung läuft trotzdem zunächst mal weiter.
Um nicht unnötig Zeit zu Vertrödeln sollte man in jedes .FormCreate() folgendes einbauen:
Delphi-Quellcode:
procedure TForm5.FormCreate(Sender: TObject);
begin
   if Application.Terminated then Exit; // <==
   Fxxx := Txxx.Create;
   ....
end;
Natürlich nur, wenn FormCreate schon vorhanden ist, und dort auch etwas gearbeitet wird.

Man kann auch direkt in der Projektdatei eingreifen:
Delphi-Quellcode:
  PasswordForm.ShowModal;
  if Application.Terminated then Exit; // <==
   
  Application.CreateForm(TForm42, Form42);
  Application.CreateForm(TForm66, Form66);
  ...
  Application.Run;

Svenkan 23. Aug 2007 22:34

Re: Splashscreen - Anwendung schließen
 
Zitat:

Zitat von Die Muhkuh
Wobei man halt nicht verwenden sollte...

Weil?

Dezipaitor 23. Aug 2007 22:57

Re: Splashscreen - Anwendung schließen
 
ist halt nicht die einzige funktion, um einen Rückgabewert an den Aufruferprozess zu setzen?

Svenkan 23. Aug 2007 23:01

Re: Splashscreen - Anwendung schließen
 
Ja mhm.., aber wo liegt denn der Vorteil von shmia's Methode gegenüber messie's?

Dezipaitor 23. Aug 2007 23:15

Re: Splashscreen - Anwendung schließen
 
Zitat:

Zitat von Svenkan
Ja mhm.., aber wo liegt denn der Vorteil von shmia's Methode gegenüber messie's?

Mit Application.Terminate wird die Windows Nachrichtenschleife noch korrekt beendet und vieles QuitNachrichten werden noch vorher gesendet.
Wenn dann alles freigegeben wurde, dann wird aus der Methode TApplication.Run gesprungen und man ist wieder im Hauptprogramm. Danach kann
man natürlich halt(x) aufrufen. Wenn man das nicht macht, wird sozusagen halt(0) aufgerufen.

Svenkan 23. Aug 2007 23:32

Re: Splashscreen - Anwendung schließen
 
Also sozusagen (sry, aber ich habe mich mit den Befehlen noch nicht auseinerander gesetzt) wird bei .Terminate alles noch abgearbeitet und bei HALT wird (ähnlich wie bei Linux) direkt ein 'Strich gezogen' und direkt alles abgebrochen und 'die Arbeit beendet'?

Luckie 24. Aug 2007 00:07

Re: Splashscreen - Anwendung schließen
 
Und warum startets du die Anwnedung erst, wenn das Passwort falsch ist? sakura hat in der Tutorialsparte ein Splashscreen Tutorial veröffentlicht. Dort wird die Splashscreen in der Projektdatei erzeugt und angezeigt:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Controls,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

var
  frmLogin: TForm;

begin
  Application.Initialize;
  frmLogin := TForm2.Create(Application);
  frmLogin.ShowModal;
  if frmLogin.ModalResult <> mrCancel then
  begin
    frmLogin.Free;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.


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