<div dir="ltr"><div>I got it!<br><br></div>Thank all of you very much.<br></div><div class="gmail_extra"><br><div class="gmail_quote">2014-12-15 17:49 GMT+07:00 Mattias Gaertner <span dir="ltr"><<a href="mailto:nc-gaertnma@netcologne.de" target="_blank">nc-gaertnma@netcologne.de</a>></span>:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, 15 Dec 2014 07:34:12 -0300<br>
Glaucos Ginez <<a href="mailto:glaucosginez@gmail.com">glaucosginez@gmail.com</a>> wrote:<br>
<br>
> Try TObjectList.<br>
<br>
That does not support streaming.<br>
<br>
<br>
>[...]<br>
<span class="">> > I want my TClass1 can contain many TClass2. It means that number of<br>
> > TClass2 in TClass1 is not fixed.<br>
> ><br>
> > I've tried to use TComponentList, but it does not work. I knew that<br>
> > TCollection supports streaming, however, TClass1 and TClass2 must be<br>
> > TComponent.<br>
<br>
</span>The trick is overriding some TComponent methods.<br>
<br>
TClass1<br>
<span class="">    procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;<br>
</span>TClass2<br>
    procedure SetParentComponent(Value: TComponent); override;<br>
    function GetParentComponent: TComponent; override;<br>
    function HasParent: Boolean; override;<br>
<br>
See for example<br>
lazarus/examples/designnonlcl/mywidgetset.pas<br>
class TMyWidget<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
Mattias<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
--<br>
_______________________________________________<br>
Lazarus mailing list<br>
<a href="mailto:Lazarus@lists.lazarus.freepascal.org">Lazarus@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus</a><br>
</div></div></blockquote></div></div>