GARANTIR DESCONTO

Fórum Access violation no ShowModal do Form #401398

20/05/2011

0

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:
 
  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

Sidney Abreu

Responder

Posts

20/05/2011

Wilson Junior

Teste assim:
if  FrmUsuarios <> nil then
    FrmUsuarios := TFrmUsuarios.Create( Self )
;
FrmUsuarios.ShowModal;
FreeAndNil( FrmUsuarios );


Espero ter colaborado.
Responder

Gostei + 0

24/05/2011

Sidney Abreu

  Não Resolveu.
Responder

Gostei + 0

24/05/2011

Marco Salles

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)
Responder

Gostei + 0

24/05/2011

Rafael Mattos

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)


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
Responder

Gostei + 0

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

Aceitar