Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Application->MessageBox спрашивает два раза 
V
    Опции темы
draCOOLa
Дата 9.4.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ в принципе вроде ни чего особенного, а застрял на такой вот фигне.
Есть в программе кнопка выхода, вот мне нужно чтобы при нажатии на нее
спрашивал подтверждение выхода, типа хотите выйти? да - нет.
Я написал такой код

Код

{
switch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
                        {
                        case IDYES:    Close();
                        break;

}
}


так вот здесь почему то для того что бы выйти нужно нажать кнопку "Yes" 2 раза

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


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



у меня все ОК... может у тебя где то еще этим кодом обрабатывается закрытие формы?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
draCOOLa
Дата 9.4.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да нет вроде, форма как таковая вообще одна...
Единственное еще идет вопрос когда закрываешь при помощи
queryclose, но думаю здесь ни как это не связно...
PM MAIL   Вверх
Rodman
Дата 9.4.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



вот как раз и связано! потому как QueryClose отлавливает закрытие.. т.е. отловилось один раз и ты снова его закрываешь... пот он и бочинит!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
draCOOLa
Дата 9.4.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да точно ты прав! А вот как бы обойти это....?
PM MAIL   Вверх
Rodman
Дата 9.4.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



фот
Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        switch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
        {
                        case IDYES:    Application->Terminate();// Close();
                        break;
        }
}

PM MAIL WWW Skype GTalk YIM MSN   Вверх
draCOOLa
Дата 9.4.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Почему то не получается... все равно два раза спрашивает.
Я правильно понял, на событие для формы closequery указывает Application->Terminate, 
а на кнопку закрытия button просто close?
PM MAIL   Вверх
mrbrooks
Дата 9.4.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А можно и так:
Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        switch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
        {
                        case IDYES:   CanClose = true;
                        break;
        }

}


PM MAIL   Вверх
Rodman
Дата 9.4.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



так! подожди!

у тебя этот код висит тока на одном событии? можешь выложить? я протестирую
PM MAIL WWW Skype GTalk YIM MSN   Вверх
draCOOLa
Дата 9.4.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На двух вот: 


Код

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
switch (Application->MessageBoxAswitch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
                        {
                        case IDNO:     CanClose = false;
                        break;
}
}




Код

void __fastcall TForm1::N5Click(TObject *Sender)
{
switch (Application->MessageBoxAswitch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
                        {
                        case IDYES:     Close();
                        break;
}
}

PM MAIL   Вверх
Rodman
Дата 9.4.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



ты хочешь чтобы в обоих случая просто спрашивала и при необходимости закрывала?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
draCOOLa
Дата 9.4.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да!
PM MAIL   Вверх
Rodman
Дата 9.4.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Код

//---------------------------------------------------------------------------

void __fastcall TForm1::N31Click(TObject *Sender)
{
        switch (Application->MessageBoxAswitch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
        {
                        case IDYES:     Application->Terminate();//Close();
                        break;
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        switch (Application->MessageBoxAswitch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
        {
                        case IDNO:     Application->Terminate();//CanClose = false;
                        break;
        }
}
//---------------------------------------------------------------------------

PM MAIL WWW Skype GTalk YIM MSN   Вверх
draCOOLa
Дата 9.4.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, огромное!!!!!!!!!!!! Все работает  smile 
PM MAIL   Вверх
korian
Дата 9.4.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

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



тока зачем код копировать?
Код

void __fastcall TForm1::N31Click(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        switch (Application->MessageBoxAswitch (Application->MessageBox("Вы действительно хотите выйти?",
                        "Подтвердите выход!", MB_YESNO + MB_ICONQUESTION))
        {
        case IDNO:
                CanClose = false;
                break;
        }
}


Это сообщение отредактировал(а) korian - 9.4.2008, 17:27
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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