Ich möchte ein Formular mit seinem Klassennamen als String erstellen, , nach dem zuvor gefragt wurde , aber anstatt GetClass
aufzurufen, möchte ich Delphis neue RTTI-Funktion verwenden.
Mit diesem Code habe ich ein TRttiType
, aber ich weiß nicht, wie ich es instanziieren soll.
Ich habe auch lType.NewInstance
ohne Glück versucht.
Sie müssen das TRttiType
auf das TRttiInstanceType
Klasse und rufen Sie dann den Konstruktor mit dem GetMethod
Funktion.
Probieren Sie dieses Beispiel
aus %Vor% Sie sollten die TRttiContext.FindType()
-Methode verwenden, anstatt manuell durch die TRttiContext.GetTypes()
-Liste zu blättern, zB:
Wie auch immer, sobald Sie TRttiType
für den gewünschten Klassentyp gefunden haben, können Sie es wie folgt instanziieren:
Oder, wenn TFormBase
von TForm
abgeleitet ist:
Oder, wenn TFormBase
von TCustomForm
abgeleitet ist:
Update: Oder, wie @RRUZ gezeigt hat. Das ist mehr TRttiType
-orientiert und beruht nicht auf Funktionen aus der älteren TypInfo
-Einheit.
Tags und Links delphi delphi-xe2 rtti