Criação de objetos em tempo de execução.
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
Curtidas 0
Respostas
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.
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
06/04/2008
Flyskin, muito obrigado.
Foi uma ótima ajuda.
Deu pra entender perfeitamente.
Vlw
Foi uma ótima ajuda.
Deu pra entender perfeitamente.
Vlw
GOSTEI 0