есть (пишется) MDI приложение
класс доумента один, видов несколько
а). это диалог от CFormView с всякими контролави для ввода информации
б). тоже так же ............ с гридом для отображения информации
есть желание, непонятно что читать или где, что бы его реализовать
задача:
1. .. 2-й вид отбражает данные (например данные из таблица/БД)
всего 3! таблицы и заранее исзвестно что кроме 3-х таблиц ничего
другого он отображать не будет. т.е., к примеру, в меню есть команда отобразить табл1,
табл2, табл3.
Так вот когда, предположим, табл1 уже открыта(отображена) и пользователь нажимает в меню еще раз табл1,
то хочется что бы табл1 не отображался вновь, т.е. нужно что бы активизировался СУЩЕСТВУЮЩИЙ(открытый) вид.
И так со всеми тремя табл...
непонятно что?
1.1 непонятно нужно ли создавать три класса для каждого из этих отображений,
ведь в принципе кроме грида на нем ничего не будет, а значит они соовершенно идентичны.
1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый)
вид уже открыт?
Здравствуйте, t_n_t, Вы писали:
__>есть (пишется) MDI приложение __>класс доумента один, видов несколько __>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый) __>вид уже открыт?
Из MSDN:
Example
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
void CMyDoc::OnRepaintAllViews()
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView* pView = GetNextView(pos);
pView->UpdateWindow();
}
}
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
Здравствуйте, MadMaxII, Вы писали:
MMI>Здравствуйте, t_n_t, Вы писали:
__>>есть (пишется) MDI приложение __>>класс доумента один, видов несколько __>>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый) __>>вид уже открыт?
MMI>Из MSDN: MMI>
MMI>Example
MMI>// This example uses CDocument::GetFirstViewPosition
MMI>// and GetNextView to repaint each view.
MMI>void CMyDoc::OnRepaintAllViews()
MMI>{
MMI> POSITION pos = GetFirstViewPosition();
MMI> while (pos != NULL)
MMI> {
MMI> CView* pView = GetNextView(pos);
MMI> pView->UpdateWindow();
MMI> }
MMI>}
MMI>// An easier way to accomplish the same result is to call
MMI>// UpdateAllViews(NULL);
MMI>
Спасибо, но это я видел, не понятно как из MainFram'а это выполнить?
GetFirstViewPosition' : undeclared identifier
и т.д.
думаю что нужно как нить получить указатель на??? может виды или шаблоны
я уже много в мспне перерыл и чего то непонимаю наверно
Здравствуйте, t_n_t, Вы писали:
__>Здравствуйте, MadMaxII, Вы писали:
MMI>>Здравствуйте, t_n_t, Вы писали:
__>>>есть (пишется) MDI приложение __>>>класс доумента один, видов несколько __>>>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый) __>>>вид уже открыт?
MMI>>Из MSDN: MMI>>
MMI>>Example
MMI>>// This example uses CDocument::GetFirstViewPosition
MMI>>// and GetNextView to repaint each view.
MMI>>void CMyDoc::OnRepaintAllViews()
MMI>>{
MMI>> POSITION pos = GetFirstViewPosition();
MMI>> while (pos != NULL)
MMI>> {
MMI>> CView* pView = GetNextView(pos);
MMI>> pView->UpdateWindow();
MMI>> }
MMI>>}
MMI>>// An easier way to accomplish the same result is to call
MMI>>// UpdateAllViews(NULL);
MMI>>
__>Спасибо, но это я видел, не понятно как из MainFram'а это выполнить? __>GetFirstViewPosition' : undeclared identifier __>и т.д. __>думаю что нужно как нить получить указатель на??? может виды или шаблоны __>я уже много в мспне перерыл и чего то непонимаю наверно
аа
даже это понятно осталось только понять
как опреелить открыт ли вид или нет????
Здравствуйте, t_n_t, Вы писали:
__>аа __>даже это понятно осталось только понять __>как опреелить открыт ли вид или нет????
Здесь уже все зависит от вашей фантазии и конкретной программы. Например такой способ: в класс, производный от CView, добавляем переменную член, которая и будет определять что-же она показывает, табл.1, 2 или 3, или что-то другое.
Здравствуйте, MadMaxII, Вы писали:
MMI>Здравствуйте, t_n_t, Вы писали:
__>>аа __>>даже это понятно осталось только понять __>>как опреелить открыт ли вид или нет????
MMI>Здесь уже все зависит от вашей фантазии и конкретной программы. Например такой способ: в класс, производный от CView, добавляем переменную член, которая и будет определять что-же она показывает, табл.1, 2 или 3, или что-то другое.
это хорошо...
но вот вопрос? в "1С:Предприятие" когда выбираеш показать какой нить справочник,
то если он уже открыт, то он активизируется, а если нет, то открывается
так вот справочников там...
и что на каждый свою переменную?
неужели нет ни какого стандартного(библиотечного) способа?
Здравствуйте, t_n_t, Вы писали:
MMI>>Здесь уже все зависит от вашей фантазии и конкретной программы. Например такой способ: в класс, производный от CView, добавляем переменную член, которая и будет определять что-же она показывает, табл.1, 2 или 3, или что-то другое.
__>это хорошо... __>но вот вопрос? в "1С:Предприятие" когда выбираеш показать какой нить справочник, __>то если он уже открыт, то он активизируется, а если нет, то открывается __>так вот справочников там... __>и что на каждый свою переменную? __>неужели нет ни какого стандартного(библиотечного) способа?
У каждого справочника в 1С есть идентификатор (например имя справочника). Вот и скажите мне, чем отличается ваш Вью, который показывает Табл. 1 от Вью, показывающий Табл. 3?
Здравствуйте, t_n_t, Вы писали:
__>1.1 непонятно нужно ли создавать три класса для каждого из этих отображений, __>ведь в принципе кроме грида на нем ничего не будет, а значит они соовершенно идентичны. __>1.2 как пройтись по списку открытых окон и определить что выбираемый(открываемый) __>вид уже открыт?
Хм... Если документов всего 3 и больше не будет, может, проще будет сделать SDI приложение со сплиттерами? Грид в одном фрейме, таблица в другом? Многие проблемы (типа создание трёх классов или определение открытого окна) исчезнут сами собой.
Подробнее можно посмотреть здесь
Впрочем, не хочу вас слишком обнадеживать: я вовсе не уверен, что все понял правильно. Два смысловых слоя я уловил, но, по-моему, там был еще и третий... (А&Б Стругацкие, "Жук в муравейнике").