Nada más un detalle respecto del ejemplo de
dec. La clase contenedora se encarga de la construcción y destrucción del objeto Pruebas, es decir,
le pertenece. Por tanto hay que proteger la propiedad contra cambios no deseados: si se asigna
DePruebas.Pruebas := ObjetoPruebas
estamos sustituyendo el objeto que originalmente pertenecía a DePruebas por otro y al hacer FPruebas.Free será este otro el que estemos destruyendo y el objeto original se habrá quedado atorado en memoria.
Normalmente, para este tipo de propiedades hay que definir un método set:
Código Delphi
[-]
property Pruebas: TPruebas read FPruebas write SetPruebas
donde SetPruebas se encargará de copiar el contenido. Puede hacerlo campo por campo aunque lo usual es transferir ese copiado al método Assign de TPruebas:
Código Delphi
[-]
type
TPruebas
public
procedure Assingn(Source: TPersistent); override;
end;
y dejar SetPruebas con:
FPruebas.Assign(Value);
// Saludos