Formularinstanzen mit lokalen Variablen erstellen
Nach oben zu Die Formularerstellung im Speicher steuern
Mithilfe einer lokalen Variablen kann in einer Ereignisbehandlungsroutine eine eindeutige Instanz eines modalen Formulars erstellt werden. In diesem Fall spielt es keine Rolle, ob das Formular automatisch erstellt wird oder nicht. Die Ereignisbehandlungsroutine enthält keine Referenz auf die globale Formularvariable. Beispiel:
procedure TMainForm.Button1Click(Sender: TObject);
var
RF:TResultForm;
begin
RF:=TResultForm.Create(self)
RF.ShowModal;
RF.Free;
end;
void __fastcall TMainMForm::FirstButtonClick(TObject *Sender)
{
TResultsForm *rf = new TResultsForm(this); // rf is local form instance
rf->ShowModal();
delete rf; // form safely destroyed
}
Beachten Sie, dass die globale Instanz des Formulars in dieser Ereignisbehandlungsroutine nicht verwendet wird.
Normalerweise werden in einer Anwendung die globalen Formularinstanzen verwendet. Wenn Sie jedoch eine neue Instanz eines modalen Formulars lediglich in einem eingegrenzten Bereich (z.B. in einer Funktion) benötigen, ist eine lokale Instanz die sicherste und effizienteste Methode.
In Ereignisbehandlungsroutinen für nichtmodale Formulare können natürlich keine lokalen Variablen verwendet werden. Dieser Formulartyp erfordert einen globalen Gültigkeitsbereich. Die Variable muss so lange sichtbar sein, wie das Formular benötigt wird. Da die Methode Show sofort nach dem Öffnen des Formulars beendet wird, ist die lokale Variable danach nicht mehr sichtbar.