Owner x Parent

Delphi

11/09/2006

Fiquei surpreso quando lí num outro fórum que o Parent funciona como o Owner na destruição de seus componentes-filhos.
Então minha pergunta é: Não é necessários destruir componentes sem Owner que possuam Parent ?


Siam

Siam

Curtidas 0

Respostas

Massuda

Massuda

11/09/2006

Não encontrei no código fonte da VCL o comportamento que você descreveu. Poderia dar mais detalhes?


GOSTEI 0
Siam

Siam

11/09/2006

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


GOSTEI 0
Siam

Siam

11/09/2006

[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]


GOSTEI 0
Massuda

Massuda

11/09/2006

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.


GOSTEI 0
Siam

Siam

11/09/2006

Mas mesmo mudando-se o Parent, o ControlCount também é modificado e a destruição se dará de qualquer jeito.


GOSTEI 0
POSTAR