Pessoal,

Tenho o seguinte código, dentro de um menu no form principal do meu projeto:

  if not Assigned(fForm1) then
     fForm1 := TfForm1.Create(Application);
  fForm1.ShowModal;

e no OnClose do Form1, eu tenho:

  Action := caFree;
  Form1 := nil;

Se eu clicar no menu uma vez após a outra, dá Access Violation, por que na
segunda vez nao entra no IF do Assigned, ou seja, trata como se o Form1
ainda estivesse na memória.

Agora, o engraçado é que se eu colocar o mesmo código do menu em um outro
formulário, sem ser o principal, funciona. Eu só mudei o "Application"
para "Self". Ficou assim:

  if not Assigned(fForm1) then
     fForm1 := TfForm1.Create(Self);
  fForm1.ShowModal;

Alguém poderia dizer: ora bolas, coloque o "Self" no código do menu
também. Já tentei, só que não funcionou.

O que eu quero é que, sempre que fechar esse form, ele seja
automaticamente destruído.

Uso Delphi 2007 e os forms são SDI.

Alguem teria alguma idéia?

Obrigado,

Leandro


Responder a