На этом шаге мы рассмотрим компонент TPageManager.
Компонент предназначен для использования при написании многостраничных диалогов ("экспертов"). Сам компонент страниц не имеет. Он имеет ссылку на компонент - владельца страниц (свойство PageOwner). Для управления порядком следования страниц существуют события OnGetNextPage и OnGetPriorPage. Управление событиями, происходящими при смене страниц, осуществляется с помощью "заместителей" страниц, список которых содержит свойство PageProxies. Каждый элемент имеет тип TPageProxy, и имеет события OnEnter, OnShow, OnHide и OnLeave.
Некоторые флажки могут находиться также в частично установленном состоянии, когда признак установки флажка отображается приглушенным цветом. Такая возможность нужна, когда требуется сообщить пользователю о неполном соответствии указанному статусу (например, в ходе установки программ, таким образом, сообщается, что для установки выбраны не все доступные средства).
Методы NextPage и PriorPage могут вызываться вами прямо, либо автоматически компонентом TPageManager при нажатии на кнопки, заданные свойствами NextBtn и PriorBtn.
Свойство | Описание |
---|---|
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.