Desativar o botão de fechar


O código abaixo impede que o evento OnClose seja chamado pelo formulário, inclusive no botão da barra de títulos, visto que ao darmos um click no "x" para fechar a janela, esta chama o evento OnClose.

Nota: esse código não impede o encerramento do programa através da função Terminate() em Button1:



//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action=caNone;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application ->Terminate();
}
//---------------------------------------------------------------------------

Pode ser que queiramos dar alguma opção ao usuário. Nesse caso, por exemplo, podemos chamar uma caixa de mensagens:


void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(MessageBox(0, "Deseja realmente fechar o Aplicativo?", "Questionamento...",
                4+32+8192) == 6)
                // 6 significa botão "SIM" pressionado
                Application->Terminate(); // encerra o programa
                else
                // significa botão "NÃO" pressionado
                Action=caNone; // não encerra o programa
}


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO