Wie instanziiere ich eine Klasse von ihrem TRttiType?

8

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.

%Vor%

Ich habe auch lType.NewInstance ohne Glück versucht.

    
Niyoko Yuliawan 07.02.2013, 02:24
quelle

2 Antworten

9

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%     
RRUZ 07.02.2013, 03:00
quelle
4

Sie sollten die TRttiContext.FindType() -Methode verwenden, anstatt manuell durch die TRttiContext.GetTypes() -Liste zu blättern, zB:

%Vor%

Wie auch immer, sobald Sie TRttiType für den gewünschten Klassentyp gefunden haben, können Sie es wie folgt instanziieren:

%Vor%

Oder, wenn TFormBase von TForm abgeleitet ist:

%Vor%

Oder, wenn TFormBase von TCustomForm abgeleitet ist:

%Vor%

Update: Oder, wie @RRUZ gezeigt hat. Das ist mehr TRttiType -orientiert und beruht nicht auf Funktionen aus der älteren TypInfo -Einheit.

    
Remy Lebeau 07.02.2013 03:02
quelle

Tags und Links