Anzeige weiterer Formulare

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 mit den beiden Unit-Dateien Unit1.cpp und Unit1.h enthält. Durch das Anklicken des Buttons ein ein weiteres Formular angezeigt werden.

Form1

Einem Projekt kann man mit Datei|Neu|Formular - C Builder ein weiteres Formular hinzufügen. Dieses Formular kann man dann wie alle bisherigen Formulare mit Komponenten aus der Tool-Palette gestalten. In diesem Beispiel soll das neue Formular ''Form2'' heißen und die zugehörigen Dateien ''Unit2.cpp'' und ''Unit2.h''. Auf dieses Formular soll ein Eingabefeld Edit1, ein OK-Button und ein Abbrechen-Button hinzugefügt werden: {{:informatik:programmierung:bck-1024.jpgBuilder eintragen lassen. Nach diesen Vorbereitungen kann ein Formular durch einen Aufruf der Methoden Show und ShowModal angezeigt werden:

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. Der C -Builder sieht dafür Werte wie ''mrCancel, mrOk'' usw. vor. 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. <code cpp> void __fastcall TForm2::AbbrechenClick(TObject *Sender) {ModalResult = mrCancel; } void __fastcall TForm2::OKClick(TObject *Sender) {ModalResult = mrOk; } </code> 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. In der folgenden Abbildung sieht man außerdem die oben beschriebene ''#include''-Anweisung: {{:informatik:programmierung:bck-1025.jpgBuilder erzeugt in der CPP-Datei des Projekts für alle dem Projekt hinzugefügten Formulare Anweisungen, durch die alle diese Formulare beim Start des Programms erzeugt werden:

Form2

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 der Abbildung des letzten Beispiels ansprechen.

Bei Dialogfeldern werden oft auch noch die folgenden Eigenschaften gesetzt: