Qual a melhor forma de liberar um form da memoria
Pessoal, tenho uma duvida sobre qual a melhor forma de liberar esse form.
Na chamada ao form atraves do botao mnuclientes posso fazer da seguinte forma no evento click.
[color=blue:bae469cd01]procedure TFrmPrincipal.MnuClientesClick(Sender: TObject);
begin
FrmCadCliente := TfrmCadCliente.Create(Application);
try
FrmCadCliente.ShowModal
finally
FrmCadCliente.Release; //todas as mensagens pendentes no pool do formulário são postadas
FrmCadCliente := nil;
end;[/color:bae469cd01]
[color=green:bae469cd01] Application.CreateForm(TFrmCadCliente, FrmCadCliente);
FrmCadCliente.ShowModal;
FrmCadCliente.Free;[/color:bae469cd01]
[b:bae469cd01]PERGUNTA: O Q SIGNIFICA O POOL DO FORMULARIO???[/b:bae469cd01]
[b:bae469cd01]Preciso colocar algum evento no onClose do form chamado???[/b:bae469cd01]
OBRIGADO!!!!!!!!!!
Na chamada ao form atraves do botao mnuclientes posso fazer da seguinte forma no evento click.
[color=blue:bae469cd01]procedure TFrmPrincipal.MnuClientesClick(Sender: TObject);
begin
FrmCadCliente := TfrmCadCliente.Create(Application);
try
FrmCadCliente.ShowModal
finally
FrmCadCliente.Release; //todas as mensagens pendentes no pool do formulário são postadas
FrmCadCliente := nil;
end;[/color:bae469cd01]
[color=green:bae469cd01] Application.CreateForm(TFrmCadCliente, FrmCadCliente);
FrmCadCliente.ShowModal;
FrmCadCliente.Free;[/color:bae469cd01]
[b:bae469cd01]PERGUNTA: O Q SIGNIFICA O POOL DO FORMULARIO???[/b:bae469cd01]
[b:bae469cd01]Preciso colocar algum evento no onClose do form chamado???[/b:bae469cd01]
OBRIGADO!!!!!!!!!!
Souzaaguiar
Curtidas 0
Respostas
Paullsoftware
02/10/2006
creio que se vc for usar form modais, deve-se criar dentro dos blocos try...finally, pois, mesmo se houver algum erro na criação do mesmo os comandos dentro do finally serão executados.
eventos nos OnClose do form chamado, normalmente só se faz necessario quando se usa aplicações MDI. mais se o form form do tipo Modal não há necessidade de acrescentar nenhum código... :wink:
eventos nos OnClose do form chamado, normalmente só se faz necessario quando se usa aplicações MDI. mais se o form form do tipo Modal não há necessidade de acrescentar nenhum código... :wink:
GOSTEI 0
Marco Salles
02/10/2006
Pessoal, tenho uma duvida sobre qual a melhor forma de liberar esse form.
acho que a forma de criar os formulários são tb importantes. Voce esta criando um formulários [b:5d5bcdb748]ShowModal[/b:5d5bcdb748] que tem a aplicação como Owner .. e logo apos voce destroe este formulário. Este procedimento alem de no minimo estranho , esta incorreto e erros sutis podem aparecer do nada
veja nesse ´experiencia´ abaixo um relato de um erro , usando este modelo de criação de[b:5d5bcdb748] form Modais [/b:5d5bcdb748], passando como Owner a aplicacão.
http://forum.devmedia.com.br/viewtopic.php?t=79822&highlight=owner&sid=200ba6ba35e273bed2684111576cf2ee
PERGUNTA: O Q SIGNIFICA O POOL DO FORMULARIO???
acredito que este termo , neste contexto , deva ser entendido , como as mensagens que ainda serão processadas pelo formulários... O método release , espera que todas as mensagens pendendes do windows direncionadas ao formulário sejam devidamente processadas , antes de efetivar a destruição do mesmo. Isto evita que erros estranhos ocorram , como um processo externo tente acessar o formulário(ou algum controle filho) , apos sua destruição
Preciso colocar algum evento no onClose do form chamado???
Action:=cafree é sempre bem vindo...
o que se deve ter em mente é que quando o usuário clica no ´x´ para fechar a janela(ou pressiona alt+f4, cntr+f4) , as aplicaçoes do tipo SDI , esconde os formulários...No caso de aplicaçoes do tipo MDI , esse formulários são minimizados... Para alterar este comportamento e logo a seguir liberar estes formulários da memoria uses action:=cafree;
GOSTEI 0