Zusätzliche Formulare in das Projekt einbinden

Viele Programme verwenden neben dem Hauptformular und den Standarddialogen weitere Formulare zur Anzeige und Eingabe von Daten.

Beispiel: Ein Programm besteht aus dem Formular Form1 und den beiden Unit-Dateien Unit1.cpp und Unit1.h. Durch das Anklicken eines Buttons im Form1, wird ein weiters Formular angezeigt werden.

Einem Projekt kann man mit Datei - Neu - Formular ein zusätzliches Formular hinzufügen. Dieses Formular kann man dann wie alle bisherigen Formulare mit Komponenten aus der Tool-Palette gestalten.

Damit man in einer Funktion des einen Formulars (z.B. Form1) auf die Elemente eines anderen Formulars (z.B. Form2) zugreifen kann, muss man die Header-Datei des verwendeten Formulars (z.B. Unit2.h) mit einer #include - Anweisung (z.B. #include <Unit1.h>) in die Unit des aufrufenden Formulars (z.B. Unit1.cpp) aufnehmen. Diese #include - Anweisung kann man entweder manuell eintragen oder mit Datei - Unit verwenden eintragen lassen. Nach diesen Vorbereitungen kann ein Formular durch einen Aufruf der Methoden Show und ShowModal angezeigt werden:

* void Show();
* virtual int ShowModal();


Diese beiden Methoden unterscheiden sich vor allem durch den Zeitpunkt, zu dem die im Quelltext auf ihren Aufruf folgende Anweisung ausgeführt wird. Bei Show wird sie unmittelbar anschließend ausgeführt, ohne auf das Schließen des Fensters zu warten. Bei ShowModal wird sie dagegen erst nach dem Schließen des Fensters ausgeführt. Damit ein anderes Fenster der Anwendung aktiviert werden kann, muss zuerst das mit ShowModal angezeigte Fenster geschlossen werden.

Ein mit ShowModal angezeigtes Formular wird als modales Fenster, modaler Dialog oder als modales Dialogfeld bezeichnet. ShowModal wird vor allem dann verwendet, wenn man Daten aus dem Fenster in die Anwendung übernehmen will.

Falls man nur Daten anzeigen will, kann man auch Show verwenden.

Ein modales Fenster wird durch eine Zuweisung eines von Null verschiedenen Wertes an die Eigenschaft ModalResult geschlossen. Dieser Wert ist dann der Funktionswert von ShowModal. Über diesen Rückgabewert informiert man den Aufrufer, mit welchem Button ein modales Formular geschlossen wurde. Es werden dafür Werte wie mrCancel, mrOk usw. vorgesehen. Wenn ein modales Fenster mit der Schließen-Schaltfläche x geschlossen wird, erhält ModalResult den Wert mrCancel.

Beispiel: Wenn das modale Fenster Form2 zwei Buttons Abbrechen und OK hat, mit denen man es schließen kann, weist man ModalResult beim Anklicken dieser Buttons zwei verschiedene Werte zu, die nicht Null sind.

void __fastcall TForm2::AbbrechenClick(TObject *Sender)
{ModalResult = mrCancel;
}
void __fastcall TForm2::OKClick(TObject *Sender)
{ModalResult = mrOk;
} 

Im aufrufenden Formular kann man über den Rückgabewert von ShowModal abfragen, mit welchem Button das Formular geschlossen wurde. Normalerweise führt man nur als Reaktion auf das Anklicken des OK-Buttons irgendwelche Anweisungen aus. Diese Vorgehensweise lässt sich weiter vereinfachen, indem man der Eigenschaft ModalResult (z.B. im Objektinspektor) der Schließen-Buttons einen Wert zuweist. Dann wird beim Anklicken der Buttons dieser Wert der Eigenschaft ModalResult des Formulars zugewiesen. So kann man sich die Ereignisbehandlungsroutinen AbbrechenClick und OKClick sparen.

Es werden in der CPP-Datei des Projekts für alle dem Projekt hinzugefügten Formulare Anweisungen erzeugt, durch die alle diese Formulare beim Start des Programms erzeugt werden. Deshalb wirkt sich ein Aufruf von Show bzw. ShowModal oder das Schließen eines Formulars nur auf die Anzeige aus. Sie hat keinen Einfluss darauf, ob ein Formular und seine Daten geladen sind (und damit Speicherplatz belegen) oder nicht. Deshalb kann man die Daten eines geschlossenen Formulars wie in ansprechen.

Bei Dialogfeldern werden oft auch noch die folgenden Eigenschaften gesetzt: