Botão fechar do form

Delphi

17/02/2008

Galera tenho o botão do menu chamado Sair, só que quero colocar o mesmo código quando o usuário for fechar pelo X do form. O código é esse
begin
if Application.MessageBox(´Deseja fechar aplicação?´, ´Aviso´, MB_YESNO+MB_ICONQUESTION) = mrYes then
  begin
    close;
  end;

Coloquei esse código no evento onclosequery do form em questão só que ele fica ao contrario se clico em Sim a pergunta é repetida e se clico em não daí o form é fechado.
Que faço?
Já testei nos eventos OnCloseQuery e OnClose, e deu a mesma coisa.


Jpauloss

Jpauloss

Curtidas 0

Respostas

Catunda

Catunda

17/02/2008

Basta colocar seu código no evento onclose do form.

Tambem não teste se for igual a mrYes e sim se for diferente de mrYes ai vc dá um Abort.

begin
if Application.MessageBox(´Deseja fechar aplicação?´, ´Aviso´, MB_YESNO+MB_ICONQUESTION) <> mrYes then
begin
Abort;
end;

Desta forma, não importa qual a maneira que será utilizada para fechar o form, ele sempre vai perguntar.


GOSTEI 0
Paullsoftware

Paullsoftware

17/02/2008

Olá amigo, acho que o tratamento do botão que você fez foi incorreta para o tipo de mensagem... tenta assim:
CanClose := False;
if MessageBox(Handle,´Deseja realmente sair da aplicação?´,pChar(Application.Title),MB_ICONQUESTION+MB_YESNO)=IDYES then
 CanClose := True;
é como eu faço na maioria das vezes e sempre funciona...
do jeito que você tava tratanto seria para o MessageDlg
CanClose := False;
if MessageDlg(´Deseja realmente sair da aplicação?´,mtConfirmation,[mbYes,mbNo],0)=mrYes then
 CanClose := True;
espero ter ajudado :wink:


GOSTEI 0
POSTAR