Fórum Descobrir se form estar aberto #496793
06/10/2014
0
Chama formgrupo:
procedure TfrmPrincipal.Grupo1Click(Sender: TObject);
var grupo:tfrmgrupo;
begin
grupo:=tfrmgrupo.Create(self);
grupo.showModal;
end;
Chama formsecao
procedure TfrmPrincipal.S1Click(Sender: TObject);
var secao:tfrmsecao;
begin
secao:=tfrmsecao.Create(self);
secao.showModal;
end;
Evento onclose do formsecao
procedure TfrmSecao.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if tfrmgrupo = nil then
begin
dm.ibSecao.close;
dm.IBControle.Close;
showmessage('Fechou'); //Somente para saber se esta fechando..
end;
end;
Quando chamo o formsecao pelo formgrupo ao fechar o formsecao ele não fecha as tabelas e esta certo não é para fechar mesmo o problema é quando chamo o formsecao direto sem o formgrupo (formgrupo fica fechado) ao fechar o formsecao ele não fecha a tabelas e deveria já que o formgrupo esta fechado...
Alguém pode me ajudar a resolver este problema...
Francisco Júnior
Curtir tópico
+ 0Post mais votado
07/10/2014
tfrmgrupo é a classe do seu form grupo e não será "nil".
Veja no seu form grupo que deve ter a variável "frmgrupo" declarada:
var frmgrupo: tfrmgrupo;
é essa variável que você irá validar se está alimentada
procedure TfrmSecao.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if frmgrupo = nil then
begin
dm.ibSecao.close;
dm.IBControle.Close;
showmessage('Fechou'); //Somente para saber se esta fechando..
end;
end;
OBS: Para que isso funcione corretamente, no Close do Form grupo, você limpar a variável do form e, aproveitando, quando limpar a variável, passe tambem o "CloseAction" como CAFree para destruir o objeto.
procedure TfrmGrupo.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := CAFree; frmgrupo := nil; end;
Abraççç,
Renato
Renato Rubinho
Gostei + 1
Mais Posts
07/10/2014
Francisco Júnior
Gostei + 0
07/10/2014
Renato Rubinho
Na sua chamada do Grupo pelo frmPrincipal, não precisa declarar uma nova variável para a criação do Form.
Utilize a frmgrupo, pois ela será alimentada e funcionará corretamente o seu controle do form aberto.
procedure TfrmPrincipal.Grupo1Click(Sender: TObject); begin frmgrupo := tfrmgrupo.Create(Self); frmgrupo.showModal; end;
Gostei + 1
07/10/2014
Francisco Júnior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)