Fórum Criação Formulario MDI #227501

22/04/2004

0

Bom dia !
Criei uma aplicação MDI onde apenas o formulario principal e o data module ficaram como autocreat´s os demais deixei que fossem criados em tempo de execução. Utilizei o seguinte código na horade cria-los:

Try
FrmCaixa:= TFrmCaixa.Creat(application);
FrmCaixa.showModal;
finally
FrmCaixa.Free;
end;

e no evento OnClose do form coloquei esse código:
action:=caFree;

Todos os formularios abrem e funcionam normalmente com este código mais tem um em especial que quando vou abri-lo da um erro e a aplicação trava sendo assim tenho que ir na aba RUN -> Reset Program para fecha-lo, alguem saberia me dizer porque pode estar acontecendo isso?
Se eu coloco FrmCaixa.Show; ao inves de showmodal ele nao da erro porem o formulario apenas pisca na tela nao ficando aberto.
Agradeço desde já a atenção de voces.


Flavia_mococa

Flavia_mococa

Responder

Posts

22/04/2004

Maxwell_monteiro

O formulario pisca por que logo apos vc cria-lo vc está dando o free nele. logo ele some mesmo.

Try
FrmCaixa:= TFrmCaixa.Creat(application);
FrmCaixa.showModal;
finally
FrmCaixa.Free;
end;

Mesmo ocorrendo ou não exceção, o finally é sempre executado! ou seja quanto vc da um show, o seu programa continua a executar e qual é a proxima linha a ser executada? FrmCaixa.Free; logo seu form fecha. agora vc deve estar se perguntando. Por que com show modal funciona? por que quando vc dá um showmodal a execuçao para e fica esperando esse form modal ser fechado! ai quando ele é fechado vc ainda vai tentar da FrmCaixa.Free mas já que ele foi fechado com a acao caFree logo FrmCaixa é igual a nil! logo ele vai dar uma violação de memoria na execução de FrmCaixa.Free

Espero que tenha entendido!


Responder

Gostei + 0

22/04/2004

Beppe

Complementando o q o Maxwell disse, há duas coisas para fazer:

tira o OnClose do form e muda FrmCaixa.Free; para FreeAndNil(FrmCaixa);

ou tira o FrmCaixa.Free; do try/finally e acrescenta FrmCaixa := nil; após Action := caFree no OnClose


Responder

Gostei + 0

27/04/2004

Flavia_mococa

Obrigada por me ajudarem.
Bjos


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar