Criação de objetos em tempo de execução.

Delphi

06/04/2008

To com uma dúvida quanto a criação de objetos em tempo de exeução.

Quando criamos componentes em tempo de execução, devemos usar uma sintaxe mais ou menos assim:

obj1 := TEdit.create(self) ou
obj1 := TEdit.create(application) ou
obj1 := TEdit.create(nil), e por aí vai...

O que ainda não consegui entender ao certo é o que significa o termos entre parênteses, e quando devo utilizar um ou outro.

Alguém pode ajudar?

Valeu.


Jonathan Bispo

Jonathan Bispo

Curtidas 0

Respostas

Flyskin

Flyskin

06/04/2008

bom jonathan, é o seguinte... quando você cria um componente em runtime, é preciso indicar um objeto que será o pai dele, ou seja, o objeto responsável pela sua destruição da memória.
Quando você utiliza o self, está indicando que o componente responsável é o atual, geralmente o formulário e quando este objeto for destruído, todos seus filhos serão automaticamente destruídos.
Quando utiliza o application, está dizendo que o pai é o executável (formulário principal) e portanto somente quando for parada a sua execução que este objeto será destruído.
Já quando utiliza o nil, você está dizendo que não quer uma destruição automática e sim uma controlada por você através de um try...finally.
Lembro que esta última é uma das mais lógicas desde que bem implementada.

Espero ter ajudado.


GOSTEI 0
Jonathan Bispo

Jonathan Bispo

06/04/2008

Flyskin, muito obrigado.

Foi uma ótima ajuda.

Deu pra entender perfeitamente.

Vlw


GOSTEI 0
POSTAR