Det kan förekomma fall när du inte vet den exakta klasstypen för ett formulärobjekt. Du kanske bara har strängvariabeln som bär namnet på formens klass, till exempel "TMyForm".
Observera att proceduren Application.CreateForm () förväntar sig en variabel av typen TFormClass för sin första parameter. Om du kan tillhandahålla en variabel TFormClass-typ (från en sträng) kommer du att kunna skapa ett formulär från dess namn.
De FindClass () Delphi-funktionen lokaliserar en klasstyp från en sträng. Sökningen går igenom alla registrerade klasser. För att registrera en klass, en procedur Registerclass () kan utfärdas. När FindClass-funktionen returnerar ett TPersistentClass-värde, kastar du det till TFormClass och ett nytt TForm-objekt skapas.
procedur TMainForm.FormCreate (avsändare: TObject);
Börja Registerclass (TFirstForm); Registerclass (TSecondForm); Registerclass (TThirdForm);
slutet;
Registrera klasserna i MainForms OnCreate-evenemang:
procedur TMainForm.CreateFormButtonClick (avsändare: TObject);
var s: sträng;
Börja s: = ListBox1.Items [ListBox1.ItemIndex]; CreateFormFromName (s);
slutet;
När du har klickat på knappen hittar du det valda formulärets typnamn och ringer en anpassad CreateFormFromName-procedur:
procedur CreateFormFromName (
const Formnamn: sträng);
var fc: TFormClass; f: TForm;
Börja fc: = TFormClass (FindClass (FormName)); f: = fc.Create (applikation); f.Show;
slutet; (* CreateFormFromName *)
Om det första objektet är markerat i listrutan kommer variabeln "s" att innehålla strängvärdet "TFirstForm". CreateFormFromName skapar en instans av TFirstForm-formuläret.