Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка выхода из программы, Выход (по крестику и по меню ) 
:(
    Опции темы
ura5
Дата 26.4.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



 ТАКОЙ ВАРИАНТ РАБОТАЕТ при выходе по крестику.А как сделать,чтобы он срабатывал при нажатии пункта меню "Выход" ?
Спасибо.

void __fastcall TTel1::OnClose(TWMClose& otv)
 {
 if (Application->MessageBox("Закончить работу ?","Подтвердите выход" ,
                             MB_YESNOCANCEL+MB_ICONQUESTION) == IDYES)
     Close();
***********************

PM MAIL   Вверх
HappyLife
Дата 26.4.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 4
Всего: 8



ura5, точно также.
PM MAIL   Вверх
Anikmar
Дата 26.4.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(HappyLife @  26.4.2007,  09:47 Найти цитируемый пост)
ura5, точно также. 


ura5, 
Если, кончено, в обработчике пункта меню вы не пишете что-то вроде exit или другие убойные функции прерывания программы. Тогда может и не сработать. В обработчике надо дать команду Close();


PM MAIL ICQ   Вверх
Klin
Дата 26.4.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Вообще-то, если чесно, он вообщем-то не правильный ;)
Нужно так (на OnClose):
Код

if (Application->MessageBox("Закончить работу?" ,
                             MB_YESNOCANCEL+MB_ICONQUESTION) == IDYES)
Action= TCloseAction(true);
else Action= TCloseAction(false);

После этого, при вызове Close() будет выполняться условие.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Vyacheslav
Дата 27.4.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Klin @  26.4.2007,  13:45 Найти цитируемый пост)
Нужно так (на OnClose):


Вообще то полная чушь.
Итак. Если нужно закрыть программу, то -это означает, что нужно закрыть главное окно.
Для того, чтобы перед закрытием производился запрос, нужно всего лишь задать ОДИН обработчик , который так и называется  OnCloseQuery(Запрос на закрытие )
Весь код привратится в сущие пустяки
Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
  CanClose =  Application->MessageBox("Закончить работу ?","Подтвердите выход" ,
                             MB_YESNOCANCEL+MB_ICONQUESTION) == IDYES;

}


В хелпе, кстати на этот счет приводится пример
Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)

{
  if (MessageDlg("Close the form?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel,0) == mrCancel)
    CanClose = false;
}
  
И все . Для крестика больше ничего не надо smile

А для меню просто напишете обработчик
Код

void __fastcall TForm1::Exit1Click(TObject *Sender)
{
    Close();
}


 


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.