BCB6 / Main Menu / File / New / Application
U "Object Inspectory" predji na karticu "Events" i pronadji "OnCloseQuery".
Duplim klikom miša klikni na polje desno od njega.
Pojaviće ti se:
Code:
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
}
//---------------------------------------------------------------------------\
Zatim unutar funkcije koju to je već generisao IDE, ubaci kod:
Code:
if ( MessageDlg( "Zatvori program?", mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo, 0 ) != mrYes )
{
// vrati se nazad...
CanClose = false;
}
... dakle sve zajedno (IDE kod + tvoj kod) treba da izgleda ovako:
Code:
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if ( MessageDlg( "Zatvori program?", mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo, 0 ) != mrYes )
{
// vrati se nazad...
CanClose = false;
}
}
//---------------------------------------------------------------------------
Sve što treba dalje da uradiš je da startuješ program (najbolje ga prethodno snimi
u neki folder). Kada ga pokreneš, probaj da ga zatvoriš... i sam pogledaj šta se
dešava.
Zaključak:
1) CanClose je *nemoguće* da ne postoji kad je to argument funkcije
FormCloseQuery() koju je generisao sam IDE!
2) Očigledno je da ne moraš *sam* da praviš dijalog za "Zatvori program", jer
funkcija MessageDlg() poziva sistemski Windows dijalog koji je već uradio ko zna
ko u Majkrosoftu.
Za složenije dijaloge tipa "Replace" postoje gotove komponente (pogledaj) karticu
Dialogs u tvom BCB-u.