Fórum Problemas as fechar um formulário #452880
22/08/2013
0
Utilizo a forma abaixo:
frmFat_NF:=TfrmFat_NF.Create(Self);
Try
frmFat_NF.ShowModal;
finally
frmFat_NF.Release;
frmFat_NF:=Nil;
end;
Até ali, tudo bem, sempre utilizei dessa forma, mas depois de aberto o meu form, faço o que preciso e ao dar um close no formulario, ele não entra no finally do chamado acima, ele apenas fecha, e depois qdo quisermos usar, as vezes ele da mensagem que está em uso.
Alguém sabe as causas ou uma forma de resolvermos isso?
Cristiano
Curtir tópico
+ 0Posts
22/08/2013
Joel Rodrigues
frmFat_NF:=TfrmFat_NF.Create(Self); frmFat_NF.ShowModal; FreeAndNil(frmFat_NF);
Gostei + 0
22/08/2013
Cristiano
Gostei + 0
22/08/2013
Deivison Melo
procedure ChamaForm(aClasseForm: TComponentClass; aForm: TForm);
Depois implemente ela:
procedure ChamaForm(aClasseForm: TComponentClass; aForm: TForm);
begin
{método para chamar form}
Application.CreateForm(aClasseForm, aForm);
try
aForm.ShowModal;
finally
aForm.Free; //ou FreeAndNil(aForm);
end;
end;
Usando a PROCEDURE:
ChamaForm(TfrmPrincipal, frmPrincipal); //Primeiro parâmetro é a classe, segundo o nome DO formulário...
PS. Estou sem Delphi aqui no trabalho, então se houver algum erro na sintaxe desculpem...
Forte abraço e bons códigos!!!
Qualquer dúvida estou à disposição!
Emanoel Deivison
Recife - PE
Gostei + 0
22/08/2013
Joel Rodrigues
Gostei + 0
22/08/2013
Marco Salles
Utilizo a forma abaixo:
frmFat_NF:=TfrmFat_NF.Create(Self);
Try
frmFat_NF.ShowModal;
finally
frmFat_NF.Release;
frmFat_NF:=Nil;
end;
Até ali, tudo bem, sempre utilizei dessa forma, mas depois de aberto o meu form, faço o que preciso e ao dar um close no formulario, ele não entra no finally do chamado acima, ele apenas fecha, e depois qdo quisermos usar, as vezes ele da mensagem que está em uso.
Alguém sabe as causas ou uma forma de resolvermos isso?
MOACIR CHISTE legal este erro , nunca tinha visto utilizando o Proprietário self , apenas com o Application.
Sua rotina aparenremente esta correta apenas varia tres alterações
1) O release não é indicado .. Somente quando se quer detruir dentro dele mesmo
2)Usaria o Free
3)Seguido de Nil se a Variavel frmFat_NFnão for Local e caso tenha necessidade de testa-la seu endereço em outro local do Código
Porém esses passos aparentemente não resolvem o seu problema
Vc disse que :
ele não entra no finally
????
O Finally é a certeza que tudo que tiver abaixo dela será Executado
Coloque uma mensagem no Finally , debugue , pois o Finally é para ser sempre executado
O Joel Rodrigues tb citou alguma perguntas .. Tente responder
O Amigo Deivison colocou um método , porém tenho razões para não gostar muito do método apresentado Se me permite colocar desta forma
apesar que o método apresentado aparece aos eitos nas rebistas e artigos espalhados por ai .. Um dos motivos esta retratado aqui
https://www.devmedia.com.br/forum/carregar-o-dataset-no-datasource-do-formulario/394165
Mas como eu disse não te nada aver com o seu problema . Logo não nos percamos e seguimos
[]sds
Gostei + 0
22/08/2013
Cristiano
Marco Antonio Salles, legal a sua explicação referente ao release e tal, bom saber dessas informações, mas eu já coloquei um ponto de depuração abaixo do finally e realmente ele não passa por lá, acho super estranho isso, sobre a técnica do Deivison, eu já conhecia, mas optei por não usar.
Eu não sei mais como testar isso...
Gostei + 0
22/08/2013
Cristiano
Venho através deste post informar que resolvemos a parada, era cagada de programador mesmo, erro grotesco, mas encontrado.
Valeu a todos que tentaram ajudar....e fica as minhas desculpas.
Gostei + 0
22/08/2013
Joel Rodrigues
Obrigado.
Gostei + 0
22/08/2013
Marco Salles
Venho através deste post informar que resolvemos a parada, era cagada de programador mesmo, erro grotesco, mas encontrado.
Valeu a todos que tentaram ajudar....e fica as minhas desculpas.
Bom vc ter informado , mas coloque o tipo de erro para arquivarmos no nosso dia a dia
[]sds
Gostei + 0
27/08/2013
Cristiano
Gostei + 0
27/08/2013
José
sendo assim estou dando o tópico por concluído.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)