Esto del RTTI (Runtime Type Information) existe hace muchos años, permite obtener en run-time la información de los objetos cargados en memoria.

Una de mis intenciones es conseguir serializar / deserializar como XML mediante el uso de RTTI. Deseadme suerte.

Un ejemplo rudimentario. Para obtener la lista de propiedades (published) y eventos de un Tform:

procedure TForm1.FormCreate(Sender: TObject);
var
  lista : TPropList;
  count, I : integer;
begin
   count := GetPropList(Sender.ClassInfo, tkAny, @lista);
   for I := 0 to count – 1 do begin
     showmessage(lista[I]^.Name);
   end;
end;

Una desventaja que yo le veo al RTTI es que sólo puedes obtener información de las propiedades marcadas como published. Por suerte a partir de Delphi 7 existe una extensión del RTTI que compilando el código mediante la directiva $METHODINFO ON es posible obtener información de métodos y propiedades marcadas como public, en éste enlace mas información.

Mas información:

http://www.orlandobrea.com.ar/2006/02/reflection-en-delphi.html
http://delphi.about.com/od/oopindelphi/a/delphirtti.htm
http://chris.lichti.org/Lab/RTTI_Lib/RTTI_Lib.shtml
http://homepages.borland.com/jedi/jcl/