Автор
|
Тема: Обмен данными между PropertyPage's
|
Dim0S |
опубликован 23-01-2002 10:53 MSK
Нигде не могу найти толкового объяснения, как обмениваться данными между PropertyPage's. Как сделать значения полей одной страницы доступными с другой? И еще, можно ли, изменяя состояние, допустим check'a, на активной странице скрывать/показывать неактивную?
|
ADK
|
опубликован 23-01-2002 11:50 MSK
Всё можно, как обычно. Выцепи хэндл страницы, и потом GetDlgItem и т.д., посылка сообщений. проблема в том, что по умолчанию страницы создаются при первом обращении, но, по-моему, это можно изменить через флаги. |
Dim0S
|
опубликован 23-01-2002 15:49 MSK
Спасибо! Вот, что я раскопал еще, если кому интересно:CPropertySheet* pSheet = STATIC_DOWNCAST(CPropertySheet, GetParent()); CPropSheet* pPropSheet = DYNAMIC_DOWNCAST(CPropSheet, pSheet); // CPropSheet - мой класс, производный от CPropertySheet if (pPropSheet != NULL) { UpdateData(); TINumDeviceTo = pPropSheet->m_pageMain.m_editKanTI; SetModified(); } // где TINumDeviceTo - int, определена на текущей странице; // m_pageMain - та страница, с которой считываются данные // поля CEdit (переменная m_editKanTI) |
Thorn
|
опубликован 23-01-2002 19:22 MSK
Можно сделать так. Определяешь класс - наследник CPropertySheet, например СPSheet и, для примера, 3 странички CFirstPage, CSecondPage, CTherdPageВ CPSheet // Data CFirstPage pageF; CSecondPage pageS; CTherdPage pageT; // Конструктор CPSheet::CPSheet() { pageF.sheetP = this; pageS.sheetP = this; pageT.sheetP = this; } CPSheet* sheetP - в каждой страничке Теперь можно создать CPSheet sheet(""); sheet.AddPage(&sheet.pageF); sheet.AddPage(&sheet.pageS); sheet.AddPage(&sheet.pageT); sheet.DoModal(); Если нужно создавать и удвлять странички динамически, то, например для мастера, можно использовать методы OnSetActive(), OnWizardFinish, ..Back(), ..Next() и т.п. |