Es kann vorkommen, dass Sie den genauen Klassentyp eines Formularobjekts nicht kennen. Möglicherweise enthält die Zeichenfolgenvariable nur den Namen der Klasse des Formulars, z. B. "TMyForm"..
Beachten Sie, dass die Application.CreateForm () - Prozedur für ihren ersten Parameter eine Variable vom Typ TFormClass erwartet. Wenn Sie eine Variable vom Typ TFormClass (aus einer Zeichenfolge) bereitstellen können, können Sie ein Formular aus dessen Namen erstellen.
Das FindClass () Die Delphi-Funktion sucht einen Klassentyp aus einem String. Die Suche durchläuft alle registrierten Klassen. Eine Klasse registrieren, eine Prozedur RegisterClass () ausgestellt werden kann. Wenn die FindClass-Funktion einen TPersistentClass-Wert zurückgibt, wandeln Sie ihn in TFormClass um, und ein neues TForm-Objekt wird erstellt.
Verfahren TMainForm.FormCreate (Absender: TObject);
Start RegisterClass (TFirstForm); RegisterClass (TSecondForm); RegisterClass (TThirdForm);
Ende;
Registrieren Sie im MainForm-Ereignis OnCreate die Klassen:
Verfahren TMainForm.CreateFormButtonClick (Absender: TObject);
var s: string;
Start s: = ListBox1.Items [ListBox1.ItemIndex]; CreateFormFromName (s);
Ende;
Suchen Sie nach dem Klicken auf die Schaltfläche den Typnamen des ausgewählten Formulars und rufen Sie eine benutzerdefinierte CreateFormFromName-Prozedur auf:
Verfahren CreateFormFromName (
const Formularname : Zeichenfolge);
var fc: TFormClass; f: TForm;
Start fc: = TFormClass (FindClass (FormName)); f: = fc.Create (Anwendung); f.Show;
Ende; (* CreateFormFromName *)
Wenn das erste Element im Listenfeld ausgewählt ist, enthält die Variable "s" den Zeichenfolgenwert "TFirstForm". Mit CreateFormFromName wird eine Instanz des TFirstForm-Formulars erstellt.