Шаг 9.
Компоненты библиотеки RX.
Вкладка RX Tools. Компонент TPageManager

    На этом шаге мы рассмотрим компонент TPageManager.

    Компонент предназначен для использования при написании многостраничных диалогов ("экспертов"). Сам компонент страниц не имеет. Он имеет ссылку на компонент - владельца страниц (свойство PageOwner). Для управления порядком следования страниц существуют события OnGetNextPage и OnGetPriorPage. Управление событиями, происходящими при смене страниц, осуществляется с помощью "заместителей" страниц, список которых содержит свойство PageProxies. Каждый элемент имеет тип TPageProxy, и имеет события OnEnter, OnShow, OnHide и OnLeave.

    Некоторые флажки могут находиться также в частично установленном состоянии, когда признак установки флажка отображается приглушенным цветом. Такая возможность нужна, когда требуется сообщить пользователю о неполном соответствии указанному статусу (например, в ходе установки программ, таким образом, сообщается, что для установки выбраны не все доступные средства).

    Методы NextPage и PriorPage могут вызываться вами прямо, либо автоматически компонентом TPageManager при нажатии на кнопки, заданные свойствами NextBtn и PriorBtn.

   
Таблица 1. Свойства и методы компонента TPageManager
Свойство Описание
property PageOwner: TPageOwner; Ссылка на компонент - владельца страниц. В данной версии может быть только TNotebook.
property OnGetNextPage: TPageRequestEvent; В обработчике этого события вы должны указать какая страница является следующей. Вы дожны присвоить индекс этой страницы переменной NewPage. -1 означает запрет перехода на следующую страницу.
typeTPageRequestEvent = procedure(CurrentPage: Integer; var NewPage: Integer) of object; Событие запроса на порядок следования страниц компонента TPageManager.
propertyOnGetPriorPage: TPageRequestEvent; В обработчике этого события вы должны указать, какая страница является предыдущей. Вы дожны присвоить индекс этой страницы переменной NewPage. -1 означает запрет перехода на предыдущую страницу.
property PageProxies: TList; Список "заместителей" страниц. Необходим для обработки событий, происходящих при смене страниц.
property OnEnter: TPageNotifyEvent; Происходит перед тем, как данная страница станет активной. Параметр Next сообщает в каком направлении происходит изменение страницы. True означает переход к следующей, False - к предыдущей.
property OnShow: TPageNotifyEvent; Происходит после того, как данная страница стала активной. Параметр Next сообщает в каком направлении произошло изменение страницы. True означает переход к следующей, False - к предыдущей.
property OnHide: TPageNotifyEvent; Происходит после того, как данная страница стала активной. Параметр Next сообщает в каком направлении произошло изменение страницы. True означает переход к следующей, False - к предыдущей.
procedure NextPage; Осуществить переход на следующую страницу. "Cледующая" страница определяется с помощью события OnGetNextPage. Может вызываться при нажатии на кнопку "Дальше" и т.п.
procedure PriorPage; Осуществить переход на предыдущую страницу. Какая страница является предыдущей определяется с помощью события OnGetPriorPage. Может вызываться при нажатии на кнопку "Назад" и т.п.
propertyNextBtn: TControl; Свойство определяет элемент управления - кнопку, при нажатии на которую (вызове метода Click) будет осуществляться переход на "следующую" страницу "ассистента". При задании свойств NextBtn и PriorBtn компонент TPageManager следит за их запрещением и разрешением (управляет свойством Enabled). Вы можете обработать событие OnCheckButtons для переопределения поведения по умолчанию.
property PriorBtn: TControl; Свойство определяет элемент управления - кнопку, при нажатии на которую (вызове метода Click) будет осуществляться переход на "предыдущую" страницу "ассистента". При задании свойств NextBtn и PriorBtn компонент TPageManager следит за их запрещением и разрешением (управляет свойством Enabled). Вы можете обработать событие OnCheckButtons для переопределения поведения по умолчанию.

    Рассмотрим пример использования компонента TPageManager. Поместим на форму компоненты: TPageManager и TNotebook. Для компонента TNotebook создаем три страницы и на каждую помещаем соответственно: на первую страницу помещаем кнопку Button1 и метку Lebel1 указывющую номер страницы. (рис. 1)


Рис.1. Первая страница блокнота TNotebook

    На вторую страницу помещаем две кнопки Button2 и Button3, и метку Lebel2. (рис. 2)


Рис.2. Вторая страница блокнота TNotebook

    На третью страницу помещаем две кнопки Button4 и Button5, и метку Lebel3. (рис. 3)


Рис.3. Третья страница блокнота TNotebook

    Для компонента TPageManager, для свойства PageOwner выбираем значение Notebook1. Для PageProxy1, PageProxy2 и PageProxy3 устанавливаем соответствующие страницы блокнота Page1, Page2 и Page3. Далее пишем обработчики событий OnClick для наших кнопок, чтобы происходило соответствующее переключение между страницами блокнота TNotebook:

procedure TForm1.Button1Click(Sender: TObject);
begin
     Form1.PageManager1.GetPriorPageIndex(1);
     Form1.PageManager1.NextPage;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     Form1.PageManager1.GetPriorPageIndex(0);
     Form1.PageManager1.PriorPage;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
     Form1.PageManager1.GetNextPageIndex(2);
     Form1.PageManager1.NextPage;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
     Form1.PageManager1.GetPriorPageIndex(1);
     Form1.PageManager1.PriorPage;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
     Form1.Close;
end;

    При выполнении этой программы мы сможем перемещаться по страницам блокнота при помощи нажатий на соответствующие кнопки.

Текст этого примера можно взять здесь.

    На следующем шаге мы рассмотрим компонент TMergeManager.




Предыдущий шаг Содержание Следующий шаг