Fórum Access violation no ShowModal do Form #401398
20/05/2011
0
É 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
Curtir tópico
+ 0Posts
20/05/2011
Wilson Junior
if FrmUsuarios <> nil then FrmUsuarios := TFrmUsuarios.Create( Self ) ; FrmUsuarios.ShowModal; FreeAndNil( FrmUsuarios );
Espero ter colaborado.
Gostei + 0
24/05/2011
Sidney Abreu
Gostei + 0
24/05/2011
Marco Salles
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
24/05/2011
Rafael Mattos
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
Clique aqui para fazer login e interagir na Comunidade :)