Поиск:

Ответ в темуСоздание новой темы Создание опроса
> закрыть/заполнить CListView с фильтрацией 
V
    Опции темы
17dufa
Дата 2.7.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



добрый день.
дело должно обстоять так: пользователь жмет кнопочку, появляется окошко, в котором пользователь задает фильтр, пользователь жмет ок, прога выбирает по фильтру записи и выводит при помощи Document-View.
сейчас у меня сделано так:
пользователь жмет кнопочку. находится нужный CDocTemplate и вызывается OpenDocumentFile. А в обработчике CListView::Create происходит вот что:
Код

BOOL CMyView::Create(...) 
{
    BOOL res = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
    CFilter filter(GetDocument());
    if (IDOK != filter.DoModal())
    {
        return FALSE;
    }
    return res;
}

где CFilter - диалог фильтра, который по OK считывает записи и заполняет ими документ.
Во-первых, вообще решение кривое. 
Во-вторых, если пользователь в фильтре жмет Cancel он получает сообщение "Не удалось создать документ". 
Вот собственно это сообщение и хотелось бы убрать.
решение типа:
Код

BOOL CMyView::Create(...) 
{
    BOOL res = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
    CFilter filter(GetDocument());
    if (IDOK != filter.DoModal())
    {
        CloseWindow();
        return TRUE;
    }
    return res;
}

приводят к тому, что сообщения нет, вьюхи нет, но вот главное меню соответствует рассматриваемому шаблону документа, а не главному окну.
Вопросы: 
1. Как нормально решается задача задания и применения фильтра?
2. Как по-другому избежать окошка "Не удалось создать документ"?
3. Как в рамках последнего решения полностью закрыть шаблон документа и вернуться в главное окно?

Это сообщение отредактировал(а) 17dufa - 2.7.2009, 13:45
PM MAIL   Вверх
Earnest
Дата 2.7.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А откуда вообще пришла дебильная мысль совместить создание (Create) и запрос фильтра? Нельзя мух от котлет отделить, т.е. делать по-очереди? Попробуй, ей-богу полегчает.


--------------------
...
PM   Вверх
17dufa
Дата 3.7.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ура есть ответ. мысль дебильная - не спорю. не менее дебилен тот способ, которым я сейчас собираюсь решить эту проблему. 
собственно моим первым вопросом и было, как решается проблема фильтрации в нормальном виде?
вот пользователь тыкает кнопочку, что делать? 
сейчас вызывается OpenNewDocument для соответствующего CDocTemplate. 
Вроде как надо в этом месте вывалить фильтр и тока по IDOK грузить фильтрованные данные и вызывать OpenNewDocument:
Код

void OnClick()
{
    CFilter filter;
    if (IDOK != filter.DoModal())
       return;
    CLoader::Load(filter.GetFilter());  //КУДА ГРУЗИТЬ-ТО??????
    FindDocTemplate("NAME")->OpenNewDocument(NULL);
}

Идеальное решение за одним маленьким вопросом: куда эти самые данные грузить, если насколько я понимаю объект документа создается только после вызова OpenNewDocument

Это сообщение отредактировал(а) 17dufa - 3.7.2009, 11:19
PM MAIL   Вверх
Earnest
Дата 3.7.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Получи документ и грузи в него (к-й возвращает OpenNewDocument), куда ж еше.


--------------------
...
PM   Вверх
17dufa
Дата 3.7.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Earnest, спасибо. хоть и не до конца красиво получилось, но гораздо лучше чем было в начале. а копаться дальше не хотца.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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