C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Почему закрывается форма?
creater
  Отправлено: 07.08.2004, 15:06


Станционный диспетчер

Группа: Участник
Сообщений: 120



Дело в следующем:

В главном меню программы имеется пункт "Выход" нажимая на него необходимо записать кое-куда и кое-чего, после чего выйти из программы.

Если вешаю на этот пункт:

CODE

if (Application->MessageBox("Вы действительно хотите выйти из программы?","Завершение работы",MB_ICONQUESTION|MB_YESNO) == IDYES)
{
ShowMessage("Записываю кое-чего");
Application->Terminate();
}
else
{
ShowMessage("Не хочу выходить");
}

то все замечательно.

Но если пользователь жмет на кнопку закрытия формы то программа закрывается но при этом запись кое-чего не происходит.

Вешаю на событие onClose главнй формы то же самое. При утвердительном варианте диалога... все замечательно но если выбрать отрицательный вариант то форма закрывается.

Подскажите, что можно в данном случае предпринять чтобы все хорошо закрывалось и записывалось.

Заранее большое спасибо. cool.gif
VorteKC
  Отправлено: 07.08.2004, 15:32


Ученик-кочегар

Группа: Участник
Сообщений: 3



Пиши свой код в обработчике события CloseQuery. Там есть параметр CanClose. Если его установить в истину, то программа закроется, а в ложь нет. Вот Примерно так будет выглядить твой код:
CODE

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (Application->MessageBox("Вы действительно хотите выйти из программы?","Завершение работы",MB_ICONQUESTION|MB_YESNO) == IDYES)
{
ShowMessage("Записываю кое-чего");
CanClose=true;
}
else
{
ShowMessage("Не хочу выходить");
CanClose=false;
}

}


Konstantine
Отправлено: 17.08.2004, 12:10


Мастер участка

Группа: Модератор
Сообщений: 545



Или в обработчике OnClose устанавливай CloseAction так как нада — возможные его значения в хелпе (щас не помню но шо-то типа ca_Hide, ca_Minimize, ca_None, ca_Free)
так вот — на завершение программы (главной формы) — ca_Free
шоб не выходить — ca_None

Вернуться в Вопросы программирования в C++Builder