Fórum Access Violation no showModal. #299398

14/10/2005

0

Galaera alguem saberia oq pode ser quando chamo um form como showmodal ele dar access violation?

detalhe, isso acontece quando é chamado na segunda vez, na primeira chamada esta ocorrendo tudo tranquilo.


Zumbi

Zumbi

Responder

Posts

14/10/2005

Crash

muito provavelmente... vc está distruindo o formulario que vc esta usando o showmodal na hora q ele se fecha. Na primeira vez nao da o erro porque ele deve estar sendo criado no inicio da aplicacao... mais depois q vc chama e fecha a janela, ele se destroi.... faca o seguinte:


remova o formulario da auto-criacao.... e depois coloque o seguinte codigo:

Form1 := TForm1.Create(Application);
Form1.ShowModal;
Form1.Free;


t+


Responder

Gostei + 0

14/10/2005

Zumbi

kra, tentei tirar da auto-criação, mas não funcionou
a forma que eu estou tentando fazer isso é a seguinte:

      if frmBuscaProduto.ShowModal = mrOk then
        begin
          qrycodigoprod.Value := frmBuscaProduto.CodigoProd;
        end;
      frmBuscaProduto.Free;


e no form busca produto no duploclick do grid eu tenho o seguinte:
  ModalResult := mrOK;



Responder

Gostei + 0

14/10/2005

Massuda

...isso acontece quando é chamado na segunda vez, na primeira chamada esta ocorrendo tudo tranquilo.
Pelo código que você postou e pelo fato desse form estar sendo auto-criado, na primeira vez o form existe, mas quando executa...
frmBuscaProduto.Free;
...o form é destruído. Logo, na segunda vez, o form não existe mais e daí dá o acess violation.

Faça como o CrasH sugeriu...
var
  Form: TfrmBuscaProduto;
...
Form := TfrmBuscaProduto.Create(nil);
if Form.ShowModal = mrOk then 
  begin 
    qrycodigoprod.Value := Form.CodigoProd; 
  end; 
Form.Free;



Responder

Gostei + 0

14/10/2005

Armando.boza

cara, eu tive o mesmo problema a tempos atras e depois de muito pesquisar no forum comsegui solucionar.

Eu faço assim agora:

Tire o form da auto-criação
Para chamar o form use desta maneira:

FRMExemplo := TFRMExemplo.create(application);
try
   FRMExemplo.showmodal;
finally
   FRMExemplo.release;
   FRMExemplo := nil;
end;


Pronto, nunca mais tive este problema com os forms .. que diga-se de passagem é um saco hein ... kkkkk


Responder

Gostei + 0

14/10/2005

Zumbi

Galera, é isso ai mesmo. funcionou vejam como ficou o codigo:

var
  AbreForm: TfrmBuscaProduto;
begin
      AbreForm := TfrmBuscaProduto.Create(nil);
      try
        if AbreForm.ShowModal = mrOk then
          begin
            qrycodigoprod.Value := AbreForm.CodigoProd;
          end;
      finally
        AbreForm.Free;
      end;
    end;


Vlw pela força!


Responder

Gostei + 0

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

Aceitar