Создаю компонент, содержащий другой компонент. Кидаю компонент на форму. После проведения сериализации, десериализации (путем View as Text -> View as Form) в дереве объектов появляется еще один объект класса TEDAChild без Parent`а - собственно это он и прочитался из потока - родителем которого является форма, а не компонент. Где проблема?
unit EDATest;
interface
Uses Classes;
type
TEDAChild = class;
TEDAParent = class(TComponent)
constructor Create(AOwner:TComponent);override;
destructor Destroy;override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent);override;
private
FChild:TEDAChild;
published
property Child:TEDAChild read FChild write FChild;
end;
TEDAChild = class(TComponent)
end;
procedure Register;
implementation
Uses SysUtils;
constructor TEDAParent.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Child := TEDAChild.Create(Self);
end;
destructor TEDAParent.Destroy;
begin
FreeAndNil(FChild);
inherited;
end;
procedure TEDAParent.GetChildren(Proc: TGetChildProc; Root: TComponent);
begin
Proc(Child);
end;
procedure Register;
begin
RegisterComponents('EDA',[TEDAParent]);
RegisterNoIcon([TEDAChild]);
end;
Initialization
RegisterClass(TEDAChild);
end.