Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formular beim erstellen zerstören (https://www.delphipraxis.net/52145-formular-beim-erstellen-zerstoeren.html)

VizeTE 24. Aug 2005 13:39


Formular beim erstellen zerstören
 
Hallo,

ich habe hier ein scheinbar einfaches Problem welches ich jedoch nicht in den Griff bekommen.

Ich erzeuge ein Formular und während ich es erzeugens lade ich Daten aus einer DB. Falls ich aber keine Daten finde möchte ich die ganze Sache abbrechen, d.h. das Formular nicht öffnen.
Also habe ich versucht bei den Ereignissen "FormShow" oder "FormCreate" den Vorgang abzubrechen. Dabei habe ich ModalResult auf ungleich 0 gesetzt und Self.Close aufgerufen und sogar eine Exception ausgelöst. Alles ohne Erfolg. Das Formular wurde jedes mal geladen.

Vielen Dank - Daniel

Bernhard Geyer 24. Aug 2005 13:40

Re: Formular beim erstellen zerstören
 
Das geht nur indem du dir ein eigene Close-Nachricht sendest:
Delphi-Quellcode:
PostMessage(self.Handle, WM_CLOSE, 0, 0)
Mit deinen Versuchen bringst Du das Eventhandling durcheinander.

shmia 24. Aug 2005 13:52

Re: Formular beim erstellen zerstören
 
kleiner Zusatz
In jedem OnCreate (sei es Formualar oder Datenmodul) in dem nennenswerte Arbeit verrichtet wird,
sollte man folgendes einbauen:
Delphi-Quellcode:
procedure TForm1.FormCreate(sender.TObject);
begin
   if Application.Terminated then // <-
      Exit;                       // <-
   // hier Initcode, der eine gewisse Zeit braucht
   ...
end;
So kann sich das Programm viel schneller beenden, falls es schon beim Start "abgewürgt" wurde.

VizeTE 24. Aug 2005 14:31

Re: Formular beim erstellen zerstören
 
Zitat:

Zitat von Bernhard Geyer
Das geht nur indem du dir ein eigene Close-Nachricht sendest:
Delphi-Quellcode:
PostMessage(self.Handle, WM_CLOSE, 0, 0)
Mit deinen Versuchen bringst Du das Eventhandling durcheinander.

Klappt prima. Danke für die schnelle Hilfe.


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