Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OnClose 
V
    Опции темы
Dmi3ev
Дата 4.5.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



в OnClose формы пишу:
Код

if (MessageBox(NULL,"Выйти?", "Сообщение", MB_YESNO)==ID_NO)
//не выходить;

как сделать так чтобы не выходить?


--------------------

PM MAIL   Вверх
mrbrooks
Дата 4.5.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



В событие OnClose есть параметр Action.
Код

Action = caNone; //окно не закроется

Action = caFree; //окно закроется - по умолчанию.


Так же для этих целей можно использовать событие OnCloseQuery и его параметр CanClose
PM MAIL   Вверх
Dmi3ev
Дата 4.5.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Спасибо  smile 
Видел параметр Action, но не знал как юзать.
Вот конечный результат:
Код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (MessageBox(NULL,"Выйти?", "Сообщение", MB_YESNO)==ID_NO)
        Action = caNone;
}



--------------------

PM MAIL   Вверх
THandle
Дата 4.5.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



А я бы использовал событие OnCloseQuery. Оно выполняется до OnClose. У него есть параметр CanClose. ИМХО, OnClose лучше оставлять для конечных "брутальных" действий. Сорри, Билдера нет, но вот примерчик на Delphi:
Код


procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ShowMessage('Сообщение будет показано только если будем реально выходить. Точнее если видите его, то уже вышли =)');
end;

procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageBox(0, 'Выйти?', 'Сообщение', MB_YESNO) = ID_NO then
    CanClose := false;
end;

PM   Вверх
Dmi3ev
Дата 5.5.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

А я бы использовал событие OnCloseQuery.

THandle, ок, учту  smile 
Цитата

Сорри, Билдера нет, но вот примерчик на Delphi:

Ничего страшного, смогу провести столь трудную аналогию  smile 
Ща поменяю, раз так правильнее будет...  smile 
Я просто не программер и особой разницы не вижу, поэтому THandle надеюсь на Вас  smile  


--------------------

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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