Owner x Parent
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 ?
Então minha pergunta é: Não é necessários destruir componentes sem Owner que possuam Parent ?
Siam
Curtidas 0
Respostas
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
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
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
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.
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
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