Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на сохранение 
V
    Опции темы
586
Дата 11.7.2009, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(s1lver @  11.7.2009,  10:37 Найти цитируемый пост)
а на создание и добавление нового ее нет

После загрузки файла в новую вкладку нужно поставить свойство edit->Modified = false.
При сохранении файла тоже нужно поставить свойство edit->Modified = false.
А проверка
Цитата(s1lver @  11.7.2009,  10:37 Найти цитируемый пост)
if (memo[PageControl1->ActivePageIndex]->Lines->Count>0)

здесь лишняя, т.к. пользователь может открыть файл с текстом, и стереть из него весь текст. Вкладка будет изменена, а предупреждение не будет выдано.

Т.к. табов может быть несколько, следует сделать проверку для нескольких табов. Не понятно, почему проверка делается для одного таба.
PM   Вверх
s1lver
Дата 11.7.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Цитата(s1lver @  11.7.2009,  10:37 Найти цитируемый пост)
а на создание и добавление нового ее нет

После загрузки файла в новую вкладку нужно поставить свойство edit->Modified = false.
При сохранении файла тоже нужно поставить свойство edit->Modified = false.
А проверка
Цитата(s1lver @  11.7.2009,  10:37 Найти цитируемый пост)
if (memo[PageControl1->ActivePageIndex]->Lines->Count>0)

здесь лишняя, т.к. пользователь может открыть файл с текстом, и стереть из него весь текст. Вкладка будет изменена, а предупреждение не будет выдано.


Спасибо, сейчас попробую сам доделать чтобы не мучить вопросами. smile 

Цитата

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


Вот это момент я упустил...

Это сообщение отредактировал(а) s1lver - 11.7.2009, 10:24


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
586
Дата 11.7.2009, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
    CanClose = true;
    for(int i = 0; i < PageControl1->PageCount; ++i)
    {
        if(memo[i]->Modified)
        {
            int code = MessageBox(Handle,
                (String("Сохранить вкладку \"") +
                    PageControl1->Pages[i]->Caption +
                    String("\"?")).c_str(),
                "", MB_ICONQUESTION | MB_YESNOCANCEL);
            if(code == IDCANCEL)
            {
                CanClose = false;
                break;
            }
            if(code == IDYES)
            {
                // save
            }
        }
    }
}

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


Опытный
**


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

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



Код

CanClose = true;


что-то не понял что ту происходит?


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Данкинг
Дата 11.7.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(s1lver @ 11.7.2009,  17:19)
Код

CanClose = true;


что-то не понял что ту происходит?

Разрешение на закрытие формы (и программы в целом). Если false, то программа не закроется.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
s1lver
Дата 11.7.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А два обработчика не будут конфликтовать между собой FormCloseQuery и FormClose ?

Просто в первом идет проверка на модификация а во втором автоматическая запись из листбокса


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
s1lver
Дата 11.7.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо всем за помощь, вопрос решен smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
586
Дата 11.7.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код, который может блокировать закрытие формы, лучше писать в FormCloseQuery.

Сначала вызывается событие FormCloseQuery, в случае, если CanClose истинно, вызывается FormClose.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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