Ir para conteúdo
  • Cadastre-se

dev botao

Form MDI-Child access violation


Ver Solução Respondido por Ederson,
  • Este tópico foi criado há 1514 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Bom dia !

Tenho um Form MDI-Child que é utilizado para entrada de notas, ao abri-lo pela primeira vez o lançamento da nota está normal, mas se faço a exclusão dessa nota o formulário permanece visivel para incluir uma nota entrada, mas fazendo um teste para adicionar a nova entrada foi verificado que o form não está mais em memória, e ao inserir os itens na DBGrid que está nesse Form é lançado o erro de Access Vilolation, alguém já passou por algo semelhante, no botão excluir tenho o seguinte:
 

procedure TFrmCompra.SpbExcluirClick(Sender: TObject);
begin
  if (QryEntrada.IsEmpty) then
    exit;
  if pergunta('Excluir este registro?') = false then
    exit;

  QryCtaPagar.First;
  while not QryCtaPagar.eof do
    QryCtaPagar.Delete;
  QryFretePagar.First;
  while not QryFretePagar.eof do
    QryFretePagar.Delete;
  QryEntrada.Delete;
  AbrirTabelas(false);
end;
procedure TFrmCompra.AbrirTabelas(aValue: Boolean);
begin
  QryEntrada.Active := aValue;
  QryEntradaItem.Active := aValue;
  QryCtaPagar.Active := aValue;
  QryFretePagar.Active := aValue;
  QryEstoque.Active := aValue;
  QryProduto_Fornecedor.Active := aValue;
  mtVincular.Active := aValue;
end;

 

Editado por Ederson
Faltou informação
Postado

Sim, no close está com o Action = caFree, quando eu faço  exclusão o form não fecha, mas já nesse momento o form não está na memória.

 

procedure TFrmCompra.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  AbrirTabelas(false);
  Action := caFree;
end;

 

Postado

Fiz o teste a ainda está ocorrendo o access violation.

Eu coloquei no botão excluir um close para o "fechar" o form mesmo da tela, dessa forma "funciona" claro,  mas como está hoje ao executar a exclusão da nota, o form fica aberto na tela mas igual a NIL, e ao tentar inserir os itens na DBGrid ocorre o access violation.

  • Solution
Postado (editado)

Juliomar muito obrigado pela sua ajuda, mas acredito que achei o problema, não cheguei a comentar mas estava na unit, quando importo o XML abro outro form em tempo de execução. e nesse form o evento onClose tinha o caFree,

que estava afetando o form de compras, vou revisar o código, mas a principio retirando o cafree desse form em runtime funcionou.

 

Obrigado !

Editado por Ederson
erro palavra
  • Curtir 1
  • Este tópico foi criado há 1514 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.