Fórum Problemas com o Action := caFree no OnClose de um Form #253516
06/10/2004
0
estou com um probleminha e agradeceria se alguem pudesse me dar uma luz, é o seguinte:
Criei um Form (MDIChild) chamado de frmModelo com o layout do meu sistema e nele implementei o evento OnClose com o comando Action := caFree extamente para desalocá-lo da memória quando o Form fechar.
Crio outros Forms descendentes de frmModelo e retiro do Available Forms para que eles não seja criados automaticamente e os crio da seguinte forma:
if Assigned(frmModelo1) then begin
frmModelo1 := TfrmModelo1.Create(Self);
frmModelo1.Show;
end
else
frmModelo1.SetFocus;
Quando executado da primeira vez tudo funciona perfeitamente mas quando fecho o frmModelo1 e tento abrir novamente dá um erro do tipo ´Access Violation´ isso por que o Assigned(frmModelo1) retorna true mesmo eu usando o Action := caFree no OnClose do Form pai.
Gostaria que alguem pudesse me dar uma dica de como fazer o Assigned(frmModelo1) retornar false depois que eu efetuar o fechamento desse formulário, para que com isso o usuário possa abrir o formulário mais de uma vez depois que fechar sem dar o erro.
Desde já agradeço,
Eduardo Tavares
Curtir tópico
+ 0Posts
06/10/2004
Osocram
form.release;
form := nil;
Gostei + 0
06/10/2004
Eduardo Tavares
Você está dizendo pra colocar frmModelo1 := nil dentro de cada procedimento OnClose dos descendentes?
Gostei + 0
06/10/2004
Kenshindigital
tenta assim:
if not Assigned(frmModelo1) then frmModelo1 := TfrmModelo1.Create(Self); frmModelo1.Show;
Gostei + 0
07/10/2004
Aroldo Zanela
Formulário principal:
procedure TForm1.Button1Click(Sender: TObject); begin if not Assigned(Form2) then Form2 := TForm2.Create(Self); Form2.Show; end;
No form2 (deste exemplo), evento OnClose:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; Form2 := Nil; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)