So erstellen, verwenden und schließen Sie Formulare in Delphi

In Delphi hat jedes Projekt mindestens ein Fenster - das Hauptfenster des Programms. Alle Fenster einer Delphi-Anwendung basieren auf dem TForm-Objekt.

Bilden

Formularobjekte sind die Grundbausteine ​​einer Delphi-Anwendung. Sie sind die eigentlichen Fenster, mit denen ein Benutzer interagiert, wenn er die Anwendung ausführt. Formulare haben ihre eigenen Eigenschaften, Ereignisse und Methoden, mit denen Sie ihr Aussehen und Verhalten steuern können. Ein Formular ist eigentlich eine Delphi-Komponente, aber im Gegensatz zu anderen Komponenten wird ein Formular nicht in der Komponentenpalette angezeigt.

Normalerweise erstellen wir ein Formularobjekt, indem wir eine neue Anwendung starten (Datei | Neue Anwendung). Dieses neu erstellte Formular ist standardmäßig das Hauptformular der Anwendung - das erste zur Laufzeit erstellte Formular.

Hinweis: Um ein zusätzliches Formular zum Delphi-Projekt hinzuzufügen, wählen Sie Datei | Neues Formular.

Geburt

OnCreate
Das OnCreate-Ereignis wird ausgelöst, wenn eine TForm zum ersten Mal erstellt wird, dh nur einmal. Die Anweisung, die für das Erstellen des Formulars verantwortlich ist, befindet sich in der Projektquelle (wenn das Formular so eingestellt ist, dass es vom Projekt automatisch erstellt wird). Wenn ein Formular erstellt wird und dessen Visible-Eigenschaft True ist, treten die folgenden Ereignisse in der angegebenen Reihenfolge auf: OnCreate, OnShow, OnActivate, OnPaint.

Sie sollten den OnCreate-Ereignishandler verwenden, um beispielsweise Initialisierungsaufgaben wie das Zuweisen von Zeichenfolgenlisten auszuführen.

Alle im OnCreate-Ereignis erstellten Objekte sollten vom OnDestroy-Ereignis freigegeben werden.

 OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint… 

Auf Sendung
Dieses Ereignis zeigt an, dass das Formular angezeigt wird. OnShow wird aufgerufen, kurz bevor ein Formular sichtbar wird. Dieses Ereignis tritt neben den Hauptformularen auf, wenn die Eigenschaft forms Visible auf True festgelegt oder die Show- oder ShowModal-Methode aufgerufen wird.

OnActivate
Dieses Ereignis wird aufgerufen, wenn das Programm das Formular aktiviert, dh wenn das Formular den Eingabefokus erhält. Verwenden Sie dieses Ereignis, um zu ändern, welches Steuerelement tatsächlich den Fokus erhält, wenn es nicht das gewünschte ist.

OnPaint, OnResize
Ereignisse wie OnPaint und OnResize werden immer nach der ersten Erstellung des Formulars aufgerufen, sie werden jedoch auch wiederholt aufgerufen. OnPaint wird ausgeführt, bevor Steuerelemente in dem Formular gezeichnet werden (verwenden Sie es für spezielles Zeichnen in dem Formular).

Leben

Die Geburt einer Form ist nicht so interessant, wie es Leben und Tod sein können. Wenn Ihr Formular erstellt wurde und alle Steuerelemente auf die Verarbeitung von Ereignissen warten, wird das Programm ausgeführt, bis jemand versucht, das Formular zu schließen!

Tod

Eine ereignisgesteuerte Anwendung wird nicht mehr ausgeführt, wenn alle Formulare geschlossen sind und kein Code ausgeführt wird. Wenn beim Schließen des letzten sichtbaren Formulars noch ein ausgeblendetes Formular vorhanden ist, scheint Ihre Anwendung beendet zu sein (da keine Formulare sichtbar sind), sie wird jedoch weiterhin ausgeführt, bis alle ausgeblendeten Formulare geschlossen sind. Stellen Sie sich eine Situation vor, in der das Hauptformular frühzeitig ausgeblendet wird und alle anderen Formulare geschlossen werden.

… OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy 

OnCloseQuery
Wenn wir versuchen, das Formular mit der Close-Methode oder auf andere Weise (Alt + F4) zu schließen, wird das OnCloseQuery-Ereignis aufgerufen. Der Ereignishandler für dieses Ereignis ist daher der Ort, an dem das Schließen eines Formulars abgefangen und verhindert werden kann. Wir verwenden die OnCloseQuery, um die Benutzer zu fragen, ob sie wirklich sicher sind, dass das Formular geschlossen werden soll.

 Verfahren TForm1.FormCloseQuery (Absender: TObject; var CanClose: Boolean);

Start

   wenn MessageDlg ('Dieses Fenster wirklich schließen?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel dann CanClose: = False;

Ende; 

Eine OnCloseQuery-Ereignisbehandlungsroutine enthält eine CanClose-Variable, die festlegt, ob ein Formular geschlossen werden darf. Die OnCloseQuery-Ereignisbehandlungsroutine setzt möglicherweise den Wert von CloseQuery auf False (über den CanClose-Parameter), wodurch die Close-Methode abgebrochen wird.

OnClose
Wenn OnCloseQuery angibt, dass das Formular geschlossen werden soll, wird das Ereignis OnClose aufgerufen.

Das OnClose-Ereignis gibt uns eine letzte Chance, das Schließen des Formulars zu verhindern. Der OnClose-Ereignishandler verfügt über einen Action-Parameter mit den folgenden vier möglichen Werten:

  • caNone. Das Formular darf nicht geschlossen werden. Ganz so, als hätten wir in der OnCloseQuery CanClose auf False gesetzt.
  • caHide. Anstatt das Formular zu schließen, wird es ausgeblendet.
  • caFree. Das Formular ist geschlossen, sodass der zugewiesene Speicher von Delphi freigegeben wird.
  • caMinimize. Das Formular wird eher minimiert als geschlossen. Dies ist die Standardaktion für untergeordnete MDI-Formulare. Wenn ein Benutzer Windows herunterfährt, wird das Ereignis OnCloseQuery aktiviert, nicht das Ereignis OnClose. Wenn Sie verhindern möchten, dass Windows heruntergefahren wird, fügen Sie Ihren Code in die OnCloseQuery-Ereignisbehandlungsroutine ein. CanClose = False führt dies natürlich nicht aus.

OnDestroy
Nachdem die OnClose-Methode verarbeitet wurde und das Formular geschlossen werden soll, wird das OnDestroy-Ereignis aufgerufen. Verwenden Sie dieses Ereignis für Vorgänge, die denen im OnCreate-Ereignis entgegengesetzt sind. Mit OnDestroy werden Objekte, die sich auf das Formular beziehen, freigegeben und der entsprechende Speicher freigegeben.

Wenn das Hauptformular für ein Projekt geschlossen wird, wird die Anwendung beendet.