GARANTIR DESCONTO

Fórum Criação de objetos em tempo de execução. #356675

06/04/2008

0

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

Responder

Posts

06/04/2008

Flyskin

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.


Responder

Gostei + 0

07/04/2008

Jonathan Bispo

Flyskin, muito obrigado.

Foi uma ótima ajuda.

Deu pra entender perfeitamente.

Vlw


Responder

Gostei + 0

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

Aceitar