Fórum Owner x Parent #329084

11/09/2006

0

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

Responder

Posts

11/09/2006

Massuda

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


Responder

Gostei + 0

11/09/2006

Siam

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


Responder

Gostei + 0

11/09/2006

Siam

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


Responder

Gostei + 0

11/09/2006

Massuda

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.


Responder

Gostei + 0

11/09/2006

Siam

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar