Введение в программирование

       

Создание многостраничных диалогов


Многостраничные диалоги отображаются как:

  • окна наборов свойств (property sheets);
  • диалоговые окна со вкладками (tab dialog boxes);
  • мастера, представляющие собой последовательность страниц свойств.

Примером мастеров могут служить мастера AppWizard, используемые для создания шаблона приложения. Для управления последовательностью страниц в мастерах используются кнопки Back, Next, Finish и Cancel. Чтобы создать окно набора свойств как мастер, следует перед вызовом метода DoModal вызвать метод SetWizardMode, а для доступа к командным кнопкам использовать метод SetWizardButtons.

Многостраничный диалог может быть реализован с помощью класса CPropertySheet, производного от CWnd. Объект класса CPropertySheet называется набором свойств или окном набора свойств.

Каждая страница из набора свойств может быть реализована объектом типа CPropertyPage, производного от CDialog.

Диалоговое окно класса CPropertyPage называется страницей свойств.

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

Окно набора свойств состоит из трех частей:

  • диалогового окна;
  • одной или нескольких страниц свойств, показываемых попеременно;
  • компонента "вкладка", содержащего заголовки вкладок для каждой страницы.

Для того чтобы использовать в приложении многостраничный диалог, нужно выполнить следующие шаги:

  1. Создать в редакторе ресурсов шаблон диалога отдельно для каждой страницы свойств.

    Шаблоны диалогов могут иметь различный размер - при размещении окна набора свойств будет выбран размер наибольшего шаблона диалога.

    На странице свойств окна Properties для каждого шаблона диалога следует установить значения для свойств

    • Caption - содержит заголовок вкладки, отображаемый для текущей страницы;
    • Style - имеет значение Child;
    • Border - указывает стиль рамки Thin;
    • Titlebar - установлено равным True;
    • Disabled - установлено равным True.
  2. Создать для каждого шаблона диалога класс, производный от CPropertyPage, и добавить в эти классы переменные-члены класса, используемые для доступа к странице свойств.
    Для каждой добавляемой в набор свойств страницы создать по одному объекту класса, производного от CpropertyPage
  3. Создать в коде программы объект класса CPropertySheet. Вызвать для каждой страницы (типа производного от CPropertyPage) метод CPropertySheet::AddPage.
  4. Показать окно набора свойств, вызвав метод CPropertySheet::DoModal или CPropertySheet::Create.


Чтобы выполнить обмен данными с окном набора свойств, следует создать переменные для доступа к элементам управления страниц свойств и использовать DDX- и DDV-методы для обмена данными между элементами управления и переменными класса окна страницы свойств.

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

Например:

void CMyView::DoModalPropertySheet() // Создание // модального окна { // набора свойств с двумя страницами CPropertySheet propsheet; // Создание объекта "диалог" CMyPage1 page1; // Создание объекта класса, // производного от CPropertyPage CMyPage2 page2; //... page1.m_nMember1 = m_nMember1; // Обмен данными: page1.m_nMember2 = m_nMember2; // инициализация page2.m_strMember3 = m_strMember3; // переменных членов //класса propsheet.AddPage(&page1); // Добавление страницы свойств propsheet.AddPage(&page2); //... if (propsheeet.DoModal() == IDOK) { m_nMember1 = page1.m_nMember1; m_nMember2 = page1.m_nMember2; m_strMember3 = page2.m_strMember3; GetDocument()->SetModifiedFlag(); GetDocument()->UpdateAllViews(NULL); } }


Содержание раздела