problemas com form na memoria

25/02/2006

pessoal eu faço a seguinte verificacao antes de abrir uma query

if form_clientes <> nil then
begin
comandos
....
end

se o form NÃO estiver criado, então eu abro uma query.


mas dá um erro de access violation, como se o form ainda estivesse criado...COMO FAÇO PARA DELETAR O FORM DA MEMÓRIA...

já usei ACTION:=CAFREE no evento ONCLOSE, mas não funcionou....


Rafael Santana

Respostas

25/02/2006

Marco Salles

mas dá um erro de access violation, como se o form ainda estivesse criado...COMO FAÇO PARA DELETAR O FORM DA MEMÓRIA...


este assunto é sempre muito discutido... Depende de com voce esta criando os seus forms se são auto criados se são MDIS etc...

o que acontece que a instrução :
if form_clientes <> nil then
testa apenas se o ponteiro não e nil , mas não verifica se este ponteiro é valido

no seu caso posso arriscar um palpite por este comentario

já usei ACTION:=CAFREE no evento ONCLOSE, mas não funcionou....


alem do cafree coloque nomeform:=nil , no evento onclose
tipo isso

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2:=nil;
action:=Cafree;
end;


existe ainda métodos como o FreandNil etc.. mas com eu disse , o melhor ataque depende de com esses forms estão sendo criados...


Responder Citar

25/02/2006

Rafael Santana

amigo...cara, deu certinho..

muito obrigado

:D


Responder Citar