A ver si logro explicarme. Estoy haciendo un componente (como no) y éste tiene una propiedad que es un objeto (TPersistent). Vamos, como la propiedad Constraints de muchos componentes visuales.
Bien, esta propiedad TPersistent va a tener una TCollection y aquí está el "problema".
Las TCollection, en el inspector de objetos tienen ese botoncito con los 3 puntos que abre la ventana de la colección, pero (y aquí está el "problema"), eso sólo funciona cuando su Owner es un TComponent (y en mi caso es un TPersistent).
La solución sería hacer que la propiedad fuera un TComponent, pero claro, queda "feo" en el Inspector de Objetos.
Mirando el código fuente de Dephi, he visto que el editor de las TCollection se llama desde la clase TCollectionProperty, el método Edit del cual está definido así
delphi
procedure TCollectionProperty.Edit; var Obj: TPersistent; begin Obj := GetComponent(0); while (Obj <> nil) and not (Obj is TComponent) do Obj := TPersistentCracker(Obj).GetOwner; ShowCollectionEditorClass(Designer, GetEditorClass, TComponent(Obj), TCollection(GetOrdValue), GetName, GetColOptions); end;
Creo que el problema viene de este método que, como veis, busca por los TComponent. He intentado redefinir este método pero sin resultados satisfactorios.
¿Alguna idea de cómo poder "lanzar" el editor del TCollection desde una propiedad de un TPersistent?
Gracias