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.
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
Curtir tópico
+ 0
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.
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
Foi uma ótima ajuda.
Deu pra entender perfeitamente.
Vlw
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)