Access violation no ShowModal do Form
Galera eu preciso da ajuda de vocês, eu estou trabalhando com o Delphi2010 e DBExpress4 com Firebird2.1.
É o seguinte: Eu tenho um ActionList onde tenho todas as minhas ações dos botões para abrir os forms, e no onClick das ações eu uso o seguinte:
Eu sei que o error Access violation ocorre quando eu tento acessar um objeto que já foi destruído, não existe mais ou já foi atribuído nil a ele.
Até ai tudo bem, quando eu abro o formulario a primeira vez ele não dar erro, mas depois que fecho e abro de novo ele dar o erro e já debuguei e ele passa pela linha FrmUsuarios := TFrmUsuarios.Create(Self); mas dar o erro Access violation.
O engraçado disso tudo é que estava funcionando tudo direitinho com esse mesmo código e agora nao esta mais.
Alguém me ajuda por favor.
É o seguinte: Eu tenho um ActionList onde tenho todas as minhas ações dos botões para abrir os forms, e no onClick das ações eu uso o seguinte:
FrmUsuarios := TFrmUsuarios.Create(Self); FrmUsuarios.ShowModal; FreeAndNil(FrmUsuarios);
Eu sei que o error Access violation ocorre quando eu tento acessar um objeto que já foi destruído, não existe mais ou já foi atribuído nil a ele.
Até ai tudo bem, quando eu abro o formulario a primeira vez ele não dar erro, mas depois que fecho e abro de novo ele dar o erro e já debuguei e ele passa pela linha FrmUsuarios := TFrmUsuarios.Create(Self); mas dar o erro Access violation.
O engraçado disso tudo é que estava funcionando tudo direitinho com esse mesmo código e agora nao esta mais.
Alguém me ajuda por favor.
Sidney Abreu
Curtidas 0
Respostas
Wilson Junior
20/05/2011
Teste assim:
Espero ter colaborado.
if FrmUsuarios <> nil then FrmUsuarios := TFrmUsuarios.Create( Self ) ; FrmUsuarios.ShowModal; FreeAndNil( FrmUsuarios );
Espero ter colaborado.
GOSTEI 0
Sidney Abreu
20/05/2011
Não Resolveu.
GOSTEI 0
Marco Salles
20/05/2011
muita calma nesta hora...
pode ser muito os motivos do erro
vc esta instanciando o formulario de forma não convencional ( apesar de insistirem em atribuir o self como
proprietário, o que é errado na situação onde vc é responsável pela destruição do Objeto). Ja vi erros desta
natureza , mas mesmo que não corrija o teu problema é altamente recomendado fazer
FrmUsuarios := TFrmUsuarios.Create(nil);
try
FrmUsuarios.ShowModal;
finally
FreeAndNil(FrmUsuarios);
Tem que ver também o que vc coloca no oncreate deste form e tb no onclose ( nada de action:=cafree nestas situações)
pode ser muito os motivos do erro
vc esta instanciando o formulario de forma não convencional ( apesar de insistirem em atribuir o self como
proprietário, o que é errado na situação onde vc é responsável pela destruição do Objeto). Ja vi erros desta
natureza , mas mesmo que não corrija o teu problema é altamente recomendado fazer
FrmUsuarios := TFrmUsuarios.Create(nil);
try
FrmUsuarios.ShowModal;
finally
FreeAndNil(FrmUsuarios);
Tem que ver também o que vc coloca no oncreate deste form e tb no onclose ( nada de action:=cafree nestas situações)
GOSTEI 0
Rafael Mattos
20/05/2011
muita calma nesta hora...
pode ser muito os motivos do erro
vc esta instanciando o formulario de forma não convencional ( apesar de insistirem em atribuir o self como
proprietário, o que é errado na situação onde vc é responsável pela destruição do Objeto). Ja vi erros desta
natureza , mas mesmo que não corrija o teu problema é altamente recomendado fazer
FrmUsuarios := TFrmUsuarios.Create(nil);
try
FrmUsuarios.ShowModal;
finally
FreeAndNil(FrmUsuarios);
Tem que ver também o que vc coloca no oncreate deste form e tb no onclose ( nada de action:=cafree nestas situações)
pode ser muito os motivos do erro
vc esta instanciando o formulario de forma não convencional ( apesar de insistirem em atribuir o self como
proprietário, o que é errado na situação onde vc é responsável pela destruição do Objeto). Ja vi erros desta
natureza , mas mesmo que não corrija o teu problema é altamente recomendado fazer
FrmUsuarios := TFrmUsuarios.Create(nil);
try
FrmUsuarios.ShowModal;
finally
FreeAndNil(FrmUsuarios);
Tem que ver também o que vc coloca no oncreate deste form e tb no onclose ( nada de action:=cafree nestas situações)
Concordo com o MARCO.
vc tem que analisar tb os eventos que são executado nessa hora? na hora que vc ta instanciando um dos primeiros eventos a ser executado vai ser o FrmUsuarios.onCreate();
FrmUsuarios := TFrmUsuarios.Create(nil);
olha no onCreate do frmUsuarios se ta instanciando algum outro objeto como por exemplo um DataModulo
e não está destruindo.
--------------------
eu acho que seu problema está no onCreate do frmUsuarios
GOSTEI 0