Fórum Problema ao liberar componente com .free #337869
14/02/2007
0
Olá
A ajuda do delphi diz:
FREE Method
´Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don’t free a button, or the form that owns the button, in its OnClick event handler.´
-------------------------------------------------------------------------------------
Na minha janela eu tenho uma listagem de imagens, um botão salvar e uma função salvarimagens() associada ao evento OnClick do botão salvar.
A função salvarimagens() faz algumas operações para salvar e depois destrói os componentes de imagem e o botão salvar (usando o método .free). Como dito na ajuda do delphi, eu recebo mensagem de access violation.
Tentei fazer uma funcao salvarhandler() para o evento onclick e chamar a funcao salvarimagens() dentro dessa nova função mas o resultado foi o mesmo.
Criei um timer (threaded) e ativei ele dentro dessa nova funcao salvarhandler() e chamei a funcao salvarimagens() no evento ontimer e funcionou perfeitamente, mas me levou a outros problemas de programação (devido ao processo[thread] isolado do timer)
Nessas circunstâncias, alguem sabe alguma maneira de usar .free nessa situação, sem o uso de timers?
A ajuda do delphi diz:
FREE Method
´Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don’t free a button, or the form that owns the button, in its OnClick event handler.´
-------------------------------------------------------------------------------------
Na minha janela eu tenho uma listagem de imagens, um botão salvar e uma função salvarimagens() associada ao evento OnClick do botão salvar.
A função salvarimagens() faz algumas operações para salvar e depois destrói os componentes de imagem e o botão salvar (usando o método .free). Como dito na ajuda do delphi, eu recebo mensagem de access violation.
Tentei fazer uma funcao salvarhandler() para o evento onclick e chamar a funcao salvarimagens() dentro dessa nova função mas o resultado foi o mesmo.
Criei um timer (threaded) e ativei ele dentro dessa nova funcao salvarhandler() e chamei a funcao salvarimagens() no evento ontimer e funcionou perfeitamente, mas me levou a outros problemas de programação (devido ao processo[thread] isolado do timer)
Nessas circunstâncias, alguem sabe alguma maneira de usar .free nessa situação, sem o uso de timers?
Technoinside
Curtir tópico
+ 0
Responder
Posts
14/02/2007
Massuda
Não entendi direito, mas geralmente componentes que você põe/arrasta num form não precisa ser destruídos por você, eles serão destruídos automaticamente junte com o form.
Responder
Gostei + 0
14/02/2007
Edusjc
Posso estar enganado, ou posso não ter entendido direito o problema, mas sempre que uso o comando .free é unicamente para liberar da sua memória o seu sistema, ou seja, quando fechar o sistema utilizo o .free para que libere a memória e não fique ocupando por coisas que não vai mais utilizar.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)