Fórum Access Violation ao fechar MDI #196860
24/11/2003
0
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin Action := caNone; FormClose(nil,Action); end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin frmPrincipal.spbAddVal.Enabled := True; freeandnil(frmAddValores); end;
Alguém pode dar uma ajuda para resolver o problema?
Grato
wbb
Wbb
Curtir tópico
+ 0Posts
24/11/2003
Wbb
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin Action := caNone; FormClose(nil,Action); end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin freeandnil(form1); end;
Gostei + 0
24/11/2003
Yankleber
Tente substituir o caNone por caFree.
Gostei + 0
24/11/2003
Gbastos
Outra coisa q eu aconselharia por experiência própria, seria ao invés de passar nil como parametro no Sender do formclose, passar o próprio sender do speedbuttonclick..
Gostei + 0
25/11/2003
Wbb
Na 1ª e 2ª formas, o form pode ser fechado pelo ´X´ sem problemas, mas dá erro através do botão. Na 3ª forma também fecha pelo ´X´, mas não faz nada se apertar o botão.
As formas como já tentei foram:
1ª
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin Action := caFree; FormClose(SpeedButton3,Action); end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin freeandnil(form1); end;
2ª
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin Action := caNone; FormClose(SpeedButton3,Action); end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin freeandnil(form1); end;
3ª
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin Action := caNone; FormClose(SpeedButton3,Action); end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; frmAddValores := Nil; end;
Até tentei outras maneras, mas davam Stack Overflow ou erros semelhantes aos anteriores. Tá F... !
De qualquer maneira obrigado pela ajuda. Vou continuar tentando.
wbb
Gostei + 0
25/11/2003
Wbb
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin Close; end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; frmAddValores := Nil; end;
Obrigado a todos.
wbb
Gostei + 0
26/11/2003
Gbastos
procedure Tform1.SpeedButton3Click(Sender: TObject); Var Action : TCloseAction; begin FormClose(Sender, Action); end; procedure Tform1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end;
Mas se já resolveu, beleza..
Abraço
Gostei + 0
22/02/2017
Vinicius Simoes
Estava com o mesmo problema e identifiquei que (não sei se é bug do Delphi7) existia um tratamento de Enable de alguns botoes no evento
de um dos meus DataSources. Mesmo depois de executar o "Action:=cafree" minha aplicação estava acionando este evendo e causando
o erro em questão.
O que fiz foi setar o evento para "nil", antes de executrar a linha "Action:=cafree"
Exemplo:
DataSource.OnDataChange := nil;
Até mais.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)