Fórum Problemas para fechar form. #378782

02/06/2010

0

Sou novo nesse fantástico mundo da programação, estou usando o Delphi 2010, mas estou enfrentando alguns problemas, um deles é quando programo um botão para fechar um determinado form, coloco  o comando para fechar (close;)para um determinado botão e no evento Formclose do formulário digito o seguinte: begin
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
 application.Run;
end; Mas em tempo de execução, quando se pede para fechar, ao clicar no botão ‘’Não’’ da tela de confirmação de fechamento, o programa continua rodando, até ai tudo bem,  mas se pedir para fechar novamente o programa, mensagem alguma e mostrada e não se consegue fechar o mesmo.
Alguém poderia me dar uma luz...
Desde já agradeço a ajuda.
Reinaldo M.

Reinaldo M.

Responder

Posts

02/06/2010

Marco Salles

O problema pode estar na criação desses formulários ???   Como vc esta istanciando esses formulários ??   São Craidos Automaticamente ou vc os Esta Craindo ???   ps: O Codigo que vc esta usando não é muito usual  
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
 application.Run;
  Geralmente se faz assim  
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
  Acction:=cafree
else
 Action:=caNone;
  Mas pode ser problema na Instanciação
Responder

Gostei + 0

02/06/2010

Marco Salles

O problema pode estar na criação desses formulários ???   Como vc esta istanciando esses formulários ??   São Craidos Automaticamente ou vc os Esta Craindo ???   ps: O Codigo que vc esta usando não é muito usual  
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
 application.Run;
  Geralmente se faz assim  
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
  Acction:=cafree
else
 Action:=caNone;
  Mas pode ser problema na Instanciação
Responder

Gostei + 0

02/06/2010

Marco Salles

O problema pode estar na criação desses formulários ???   Como vc esta istanciando esses formulários ??   São Craidos Automaticamente ou vc os Esta Craindo ???   ps: O Codigo que vc esta usando não é muito usual  
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
 application.Run;
  Geralmente se faz assim  
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
  Acction:=cafree
else
 Action:=caNone;
  Mas pode ser problema na Instanciação
Responder

Gostei + 0

02/06/2010

Marco Salles

O problema pode estar na criação desses formulários ???   Como vc esta istanciando esses formulários ??   São Craidos Automaticamente ou vc os Esta Craindo ???   ps: O Codigo que vc esta usando não é muito usual      if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
 application.Run;
  Geralmente se faz assim      if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) <> IdYes then
  Acction:=cafree else  Action:=caNone;     Mas pode ser problema na Instanciação
Responder

Gostei + 0

04/06/2010

Marco Salles

Podiam Resolver este perrengue
Responder

Gostei + 0

04/06/2010

Rafael Ribeiro

VOCÊ JÁ TENTOU FAZER O INVERSO?

[CODE]
begin
 if application.MessageBox ('Deseja Realmente Sair?','Sair do Sistema', Mb_YesNo+MB_iconQuestion) = IdYes then
 application.terminate;
end;
Responder

Gostei + 0

04/06/2010

Rafael Ribeiro

CARA, NO EVENTO ONCLICK DO PRÓPRIO BOTÃO VOCÊ DIGITA O CÓDIGO:

begin
 if MessageDlg('Deseja sair do Sistema?', mtconfirmation, [mbYes, mbNo], 0)
    = mrYes then
begin
 application.terminate;
end;


NÃO SERÁ NECESSÁRIO COLOCAR A PERGUNTA NO FORMCLOSE.

ESPERO TER AJUDADO.
Responder

Gostei + 0

04/06/2010

Eduardo

Olha eu uso assim, precisa ver em realação ao banco de dados. Não sei se tem à ver (Firebird, DBExpress).. Para abrir o formulário e tirar ele da memória uso assim:   procedure TformPrincipal.opcVendasClick(Sender: TObject);
var
 formulario:tformPedidos;
 begin
    if (Application.FindComponent('formPedidos')=nil) then
begin
     Formulario:=tformPedidos.Create(Application);
    
end;
     end;   E para fechar com a pergunta é mais ou menos assim: Você faz a pergunta,  se for verdadeira você usa .........Application.Terminate;   end else begin Abort; end; end; Acho que é mais ou menos isto. Tenta aí
Responder

Gostei + 0

04/06/2010

Reinaldo M.

valew! muito obrigado.....
Responder

Gostei + 0

04/06/2010

Alberto

tente colocar
  Application.Terminate; ou
  Halt;

isso ira força fechar a tela.

Responder

Gostei + 0

05/06/2010

Lartedesign

voce quer fechar a tela ou continuar a aplicação  ??

se for fechar a aplicação..  utilize

if MessageDlg('Deseja realmete finalizar esta sessão ?',mtConfirmation,[mbYes,mbNo],0) = mrNo then
exit
else
application.terminate;
end;

Responder

Gostei + 0

05/06/2010

Lartedesign

voce quer fechar a tela ou continuar a aplicação  ??

se for fechar a aplicação..  utilize

if MessageDlg('Deseja realmete finalizar esta sessão ?',mtConfirmation,[mbYes,mbNo],0) = mrNo then
exit
else
application.terminate;
end;

Responder

Gostei + 0

05/06/2010

Marco Salles

Danou-se
Responder

Gostei + 0

05/06/2010

Marco Salles

Não vai não vai ne a pau
Responder

Gostei + 0

08/07/2010

Elton Ésqui

Antes tarde do que nunca!

begin
case MessageDlg('Deseja mesmo encerrar o programa?',  mtConfirmation, [mbYes,  mbNo], 0) of
  mrYes:
    begin
      Close;
    end;
  mrNo:
    begin
      Action := caNone;
    end;
end;
end;
Responder

Gostei + 0

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

Aceitar