Das Ganze läuft über die "System.Rtti"
Unit. Mit "GetPropList" werden die Eigenschaften ausgelesen. Die Einzelelemente (PPropInfo) befinden sich dann in der "PPropList" (System.TypInfo) und müssen dann verarbeitet werden. Das ist aber alles nicht trivial, da es z.B. Unterobjekte/Klassen gibt (tkClass), die ihrerseits wieder Eigenschaften haben. Also muss ein Baum aufgebaut werden.
Außerdem gib es verschiedene Eigenschaftstypen, die man unterschiedlich behandeln muss:
tkClass
tkEnumeration
tkFloat
tkInt64
tkInteger
tkLString
tkSet
tkString
tkUString
tkWString
Lässt sich alles machen. Einfacher geht es natürlich mit fertigen Komponenten wie DevExpress/TcxRTTIInspector usw.