Posts
Não encontrei no código fonte da VCL o comportamento que você descreveu. Poderia dar mais detalhes?
Realmente parece ser isto mesmo. Se você analisar TWinControl.Destroy, verá que tem um [b:88b2e063f4]while[/b:88b2e063f4] de ControlCount onde o Parent destroi seus filhos em Instance.Destroy
[quote:b153efbdfa=´Help do Delphi - TControl.Parent´]Note:The Parent property declared in TControl is similar to the Owner property declared in TComponent, in that the Parent of a control frees the control just as the Owner of a component frees that Component. However, the Parent of a control is always a windowed control that visually contains the control, and is responsible for writing the control to a stream when the form is saved. The Owner of a component is the component that was passed as a parameter in the constructor and, if assigned, initiates the process of saving all objects (including the control and its parent) when the form is saved.[/quote:b153efbdfa]
A primeira vista, pelo código que voce indicou, não haveria necessidade de destruir controles que tenham Parent <> nil.
Entretanto, por uma questão de consistencia, acho melhor restringir a questão da responsabilidade da destruição de um objeto ao Owner do objeto.
Um argumento a favor de deixar o Parent fora dessa questão da destruição é que a propriedade Parent pode ser alterada durante a execução enquanto a propriedade Owner é read only.
Mas mesmo mudando-se o Parent, o ControlCount também é modificado e a destruição se dará de qualquer jeito.