Fechar um form está fechado todos
Tenho 2 forms em uma aplicação Delphi. Quando abro o sistema para realizar o cadastro eu abro os dois forms, o principal e o de cadastro. O Problema vem quando eu tento fechar o form de cadastro pois ele fecha todo o sistema e não sei o que fazer... vou deixar abaixo os códigos.
Camada do form de Cadastro.
Camada do form Close frmCliente.
Depois que o Breackpoint passa pelo end; do btnCloseClick ele vai para o FormClose da frmPrincipal fechado todo o sistema.
Quero saber o por que disso e como reparar.
Camada do form de Cadastro.
procedure TfrmPrincipal.btnClienteClick(Sender: TObject); begin if frmCliente = nil then Application.CreateForm(TfrmCliente, frmCliente); frmCliente.Parent := frmPrincipal; frmCliente.Show; frmPrincipal.pnTelaPrincipal_Titulo1.Enabled := False; frmPrincipal.pnNavegacao.Enabled := False; frmPrincipal.pnBaseManutencao01.Enabled := False; end;
Camada do form Close frmCliente.
procedure TfrmCliente.btnCloseClick(Sender: TObject); begin frmPrincipal.pnTelaPrincipal_Titulo1.Enabled := True; frmPrincipal.pnNavegacao.Enabled := True; frmPrincipal.pnBaseManutencao01.Enabled := True; frmCliente.Close; frmPrincipal.AtualizaBotoesAdicionais; end;
Depois que o Breackpoint passa pelo end; do btnCloseClick ele vai para o FormClose da frmPrincipal fechado todo o sistema.
procedure TfrmPrincipal.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.qryUsoGeral.Close; DM.qryLocaliza.Close; FreeAndNil(TfrmPrincipal); end;
Quero saber o por que disso e como reparar.
Eduardo Silva
Curtidas 0
Melhor post
Ramboli
01/12/2020
Tenho 2 forms em uma aplicação Delphi. Quando abro o sistema para realizar o cadastro eu abro os dois forms, o principal e o de cadastro. O Problema vem quando eu tento fechar o form de cadastro pois ele fecha todo o sistema e não sei o que fazer... vou deixar abaixo os códigos.
Camada do form de Cadastro.
Camada do form Close frmCliente.
Depois que o Breackpoint passa pelo end; do btnCloseClick ele vai para o FormClose da frmPrincipal fechado todo o sistema.
Quero saber o por que disso e como reparar.
Camada do form de Cadastro.
procedure TfrmPrincipal.btnClienteClick(Sender: TObject); begin if frmCliente = nil then Application.CreateForm(TfrmCliente, frmCliente); frmCliente.Parent := frmPrincipal; frmCliente.Show; frmPrincipal.pnTelaPrincipal_Titulo1.Enabled := False; frmPrincipal.pnNavegacao.Enabled := False; frmPrincipal.pnBaseManutencao01.Enabled := False; end;
Camada do form Close frmCliente.
procedure TfrmCliente.btnCloseClick(Sender: TObject); begin frmPrincipal.pnTelaPrincipal_Titulo1.Enabled := True; frmPrincipal.pnNavegacao.Enabled := True; frmPrincipal.pnBaseManutencao01.Enabled := True; frmCliente.Close; frmPrincipal.AtualizaBotoesAdicionais; end;
Depois que o Breackpoint passa pelo end; do btnCloseClick ele vai para o FormClose da frmPrincipal fechado todo o sistema.
procedure TfrmPrincipal.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.qryUsoGeral.Close; DM.qryLocaliza.Close; FreeAndNil(TfrmPrincipal); end;
Quero saber o por que disso e como reparar.
Opa, quando eu preciso chamar outro form e consequentemente fecha-lo, eu faço assim
application.createform(TFormchamdo, FNomeFormeChamado);
try
FNomeFormeChamado.showmodal; // chama o form, lembre de estar usando a unit do form em questao
finally
destroy; // ou da pra colocar FNomeFormeChamado.close/destroy; tambem funciona mas recomendo apenas com o destroy
end;
sempre funcionou desta forma sem dar pau, so uma questão de adaptar agora, abraços
GOSTEI 1
Mais Respostas
Ramboli
23/11/2020
Tenho 2 forms em uma aplicação Delphi. Quando abro o sistema para realizar o cadastro eu abro os dois forms, o principal e o de cadastro. O Problema vem quando eu tento fechar o form de cadastro pois ele fecha todo o sistema e não sei o que fazer... vou deixar abaixo os códigos.
Camada do form de Cadastro.
Camada do form Close frmCliente.
Depois que o Breackpoint passa pelo end; do btnCloseClick ele vai para o FormClose da frmPrincipal fechado todo o sistema.
Quero saber o por que disso e como reparar.
Camada do form de Cadastro.
procedure TfrmPrincipal.btnClienteClick(Sender: TObject); begin if frmCliente = nil then Application.CreateForm(TfrmCliente, frmCliente); frmCliente.Parent := frmPrincipal; frmCliente.Show; frmPrincipal.pnTelaPrincipal_Titulo1.Enabled := False; frmPrincipal.pnNavegacao.Enabled := False; frmPrincipal.pnBaseManutencao01.Enabled := False; end;
Camada do form Close frmCliente.
procedure TfrmCliente.btnCloseClick(Sender: TObject); begin frmPrincipal.pnTelaPrincipal_Titulo1.Enabled := True; frmPrincipal.pnNavegacao.Enabled := True; frmPrincipal.pnBaseManutencao01.Enabled := True; frmCliente.Close; frmPrincipal.AtualizaBotoesAdicionais; end;
Depois que o Breackpoint passa pelo end; do btnCloseClick ele vai para o FormClose da frmPrincipal fechado todo o sistema.
procedure TfrmPrincipal.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.qryUsoGeral.Close; DM.qryLocaliza.Close; FreeAndNil(TfrmPrincipal); end;
Quero saber o por que disso e como reparar.
Opa, quando eu preciso chamar outro form e consequentemente fecha-lo, eu faço assim
application.createform(TFormchamdo, FNomeFormeChamado);
try
FNomeFormeChamado.showmodal; // chama o form, lembre de estar usando a unit do form em questao
finally
destroy; // ou da pra colocar FNomeFormeChamado.close/destroy; tambem funciona mas recomendo apenas com o destroy
end;
sempre funcionou desta forma sem dar pau, so uma questão de adaptar agora, abraços
no caso o try ja faz a parte de encerrar, so colocar no evento do botão fechar um CLOSE;
GOSTEI 1