Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm schließen im FormCreate (https://www.delphipraxis.net/114873-programm-schliessen-im-formcreate.html)

JSB 2. Jun 2008 09:42


Programm schließen im FormCreate
 
Hallo,


ich habe die interessante Erfahrung machen müssen, dass ich beim OnCreate eines Formulars, das Formular nicht schließen kann. Der Code wird einfach ignoriert...

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var cfg : TIniFile;
begin

    //Datenbank-Konfiguration laden
    if FileExists(pfad + 'admincfg.ini') then
    begin
      cfg := TIniFile.Create(pfad + 'admincfg.ini');
      AdminDB.Database := cfg.ReadString('DATABASE','PATH','ERROR');
      AdminDB.Username := cfg.ReadString('DATABASE','USER','ERROR');
      AdminDB.Password := cfg.ReadString('DATABASE','PASSWORD','ERROR');
    end
    else
    begin
      MessageDlg('Fehler! Konfigurationsdatei "admingui.ini" nicht gefunden!', mtError, [mbOK], 0);
      Close; //macht der net
    end;

end;
was kann man da machen, bzw. warum funktioniert es eigentlich nicht?

Luckie 2. Jun 2008 09:44

Re: Programm schließen im FormCreate
 
Überleg mal, was du da versuchst zu tun. Du versuchst in das Auto einzusteigen und gleichzeitig wieder auszusteigen. Warum macvhst du die Überprüfung nicht bevor du das Formular überhaupt erzeugst in der Projektdatei?

Alien426 2. Jun 2008 09:47

Re: Programm schließen im FormCreate
 
Du hast das Objekt "Form" noch nicht erzeugt (Form.Create) und willst doch schon eine seiner Routinen (Form.Close) ausführen.

JSB 2. Jun 2008 09:49

Re: Programm schließen im FormCreate
 
danke für den Vorschlag!

Naja... ich dachte es wäre mehr sowas wie
  • OnCreate(Autotür aufschließen)
  • merken das man den Führerschein zuhause gelassen hat
  • die tür also zumachen und nicht einsteigen...
  • ;-)

hitzi 2. Jun 2008 09:52

Re: Programm schließen im FormCreate
 
Wenn du im OnCreate merkst, dass das Programm geschlossen werden muss, dann starte dort doch einen kurzen Timer der dann nichts weiter macht, als das Programm zu schließen.

michaelg 2. Jun 2008 09:58

Re: Programm schließen im FormCreate
 
Functionieren würde
Delphi-Quellcode:
Application.Terminate;
auch schon im FormCreate.

Ob das guter Stil ist und das Deinen moralischen Ansprüchen genügt, mußt Du selbst wissen. :wink:

Luckie 2. Jun 2008 10:00

Re: Programm schließen im FormCreate
 
Zitat:

Zitat von hitzi
Wenn du im OnCreate merkst, dass das Programm geschlossen werden muss, dann starte dort doch einen kurzen Timer der dann nichts weiter macht, als das Programm zu schließen.

Warum diese Krücken? Was ist dagegen einzuwenden vorher zu prüfen, ob man das Programm starten und das Formular anzeigen lassen will oder eben nicht?

hitzi 2. Jun 2008 10:11

Re: Programm schließen im FormCreate
 
Zitat:

Zitat von Luckie
Warum diese Krücken? Was ist dagegen einzuwenden vorher zu prüfen, ob man das Programm starten und das Formular anzeigen lassen will oder eben nicht?

Weil ich zum Beispiel die verwendeten Prüffunktionen nur in der entsprechenden Klasse haben möchte, da sie nur dort gebraucht werden und dann müsste man auch noch im Projektquelltext die Prüfungen einbauen. Würde beides nicht weh tun, aber ich finde es in vielen Fällen so sinnvoller. Um den Timer zu sparen, könnte man auch eine Variable nutzen und die Form später im OnShow schließen. Wenn man allerdings die Form überhaupt nicht braucht (Logging oder ähnliches) und die Form auch nicht aufpoppen soll, dann muss man Luckies Weg nutzen.

Luckie 2. Jun 2008 10:30

Re: Programm schließen im FormCreate
 
Zitat:

Zitat von michaelg
Functionieren würde
Delphi-Quellcode:
Application.Terminate;
auch schon im FormCreate.

Die Vorschläge werden ja immer schlimmer.

Bernhard Geyer 2. Jun 2008 10:41

Re: Programm schließen im FormCreate
 
Wir machen es immer so:

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Seite 1 von 2  1 2      

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