Fórum Dúvida, COMPONENTE.FREE!!Ajudem-me #158438
07/05/2003
0
Me digam uma coisa...
Na minha aplicação eu crio alguns componentes dinamicamente...até aí blz...Eu uso um contador pra incrementar o nome...tipo;
componente.name := ´nome´+inttostr(contador)
Tudo blz!!
Agora como é que eu faço pra destruí-lo de tal forma que seja possível posteriormente criar outro componente com o mesmo nome que ´era´ dele??
Pq se eu der um componente.free aí ele some, é liberado da memória(né?) e tudo...mas caso eu crie outro componente com o mesmo nome deste detruido ele dá um erro dizendo q o componente de nome tal já existe...
Alguém tem idéia de como fazer isso??
Outra dúvida....
Vamos supor que eu tenho um form...
Dinamicamente eu crio um panel e insiro o controle pro form....
Crio um Scrollbox e insiro o controle pro panel....
Crio um Timage e insiro o controle pro ScrollBox...
Crio um Tbutton e insito o controle pro Timage....
Bom, temos mais ou menos essa hierarquia...
[color=red:d06bc6efc4][FORM][/color:d06bc6efc4]
|___[color=red:d06bc6efc4][PANEL][/color:d06bc6efc4] [color=green:d06bc6efc4]<- destruindo este os outros(scrollbox,timage,tbutton...) tb serão destruídos?[/color:d06bc6efc4]
|___[color=red:d06bc6efc4][SCROLLBOX][/color:d06bc6efc4]
|_____[color=red:d06bc6efc4][TIMAGE][/color:d06bc6efc4]
|___[color=red:d06bc6efc4][TBUTTON][/color:d06bc6efc4]
Enfim, Se eu detruir o panel todos os outros componentes que estão dentro dele serão destruídos também ou eu tem que vir destruindo lá de cima até chegar no panel pra liberar todos da memória??
Agradeço desde já!!
Caninha51
Na minha aplicação eu crio alguns componentes dinamicamente...até aí blz...Eu uso um contador pra incrementar o nome...tipo;
componente.name := ´nome´+inttostr(contador)
Tudo blz!!
Agora como é que eu faço pra destruí-lo de tal forma que seja possível posteriormente criar outro componente com o mesmo nome que ´era´ dele??
Pq se eu der um componente.free aí ele some, é liberado da memória(né?) e tudo...mas caso eu crie outro componente com o mesmo nome deste detruido ele dá um erro dizendo q o componente de nome tal já existe...
Alguém tem idéia de como fazer isso??
Outra dúvida....
Vamos supor que eu tenho um form...
Dinamicamente eu crio um panel e insiro o controle pro form....
Crio um Scrollbox e insiro o controle pro panel....
Crio um Timage e insiro o controle pro ScrollBox...
Crio um Tbutton e insito o controle pro Timage....
Bom, temos mais ou menos essa hierarquia...
[color=red:d06bc6efc4][FORM][/color:d06bc6efc4]
|___[color=red:d06bc6efc4][PANEL][/color:d06bc6efc4] [color=green:d06bc6efc4]<- destruindo este os outros(scrollbox,timage,tbutton...) tb serão destruídos?[/color:d06bc6efc4]
|___[color=red:d06bc6efc4][SCROLLBOX][/color:d06bc6efc4]
|_____[color=red:d06bc6efc4][TIMAGE][/color:d06bc6efc4]
|___[color=red:d06bc6efc4][TBUTTON][/color:d06bc6efc4]
Enfim, Se eu detruir o panel todos os outros componentes que estão dentro dele serão destruídos também ou eu tem que vir destruindo lá de cima até chegar no panel pra liberar todos da memória??
Agradeço desde já!!
Caninha51
Caninha51
Curtir tópico
+ 0
Responder
Posts
07/05/2003
Raphael Oliveira
O Free naum destroi, ele tira o componente da memoria mas deixa o ponteiro.
Tente usar FreeAndNil ou Nil
lembrando que o uso do FreeAndNil é assim:
FreeAndNil(Componente);
e o nil é normal
Se vc destruir um form ou panel ou qualquer outra coisa que contenha outros componetes dentro dele estes outros componentes tb serão destruidos, pois vc estará eliminando o Parent deles.
Qualquer duvida é só falar.
Tente usar FreeAndNil ou Nil
lembrando que o uso do FreeAndNil é assim:
FreeAndNil(Componente);
e o nil é normal
Se vc destruir um form ou panel ou qualquer outra coisa que contenha outros componetes dentro dele estes outros componentes tb serão destruidos, pois vc estará eliminando o Parent deles.
Qualquer duvida é só falar.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)