creater |
Отправлено: 07.08.2004, 15:06 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
Дело в следующем:
В главном меню программы имеется пункт "Выход" нажимая на него необходимо записать кое-куда и кое-чего, после чего выйти из программы.
Если вешаю на этот пункт:
CODE |
if (Application->MessageBox("Вы действительно хотите выйти из программы?","Завершение работы",MB_ICONQUESTION|MB_YESNO) == IDYES)
{
ShowMessage("Записываю кое-чего");
Application->Terminate();
}
else
{
ShowMessage("Не хочу выходить");
}
|
то все замечательно.
Но если пользователь жмет на кнопку закрытия формы то программа закрывается но при этом запись кое-чего не происходит.
Вешаю на событие onClose главнй формы то же самое. При утвердительном варианте диалога... все замечательно но если выбрать отрицательный вариант то форма закрывается.
Подскажите, что можно в данном случае предпринять чтобы все хорошо закрывалось и записывалось.
Заранее большое спасибо. |
|
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
|
|