Многостраничный блокнот-компоненты TTabControiw TPageControl

В Палитре компонентов имеется два элемента управления, обеспечивающих создание многостраничных блокнотов. Это компоненты TTabcontrol и TPageControl. Переключение между страницами осуществляется при помощи закладок. Закладки могут выглядеть как "настоящие" в бумажном блокноте, а могут быть похожи на стандартные кнопки Windows. Кстати, сама Палитра компонентов Delphi является примером использования такого элемента управления.

Компонент TTabControi отличается тем, что представляет собой как бы "виртуальный" блокнот. Это - единый объект с одной фактической страницей. При переключении закладок осуществляется вызов метода-обработчика события

prcperty CnChange : TNotifyEvent;

соответствующий код в котором может изменить набор видимых элементов управления и создать для пользователя иллюзию "переключения страниц".

Компонент TPageControl является контейнером для объектов TTabSheet, соответствующих отдельным страницам блокнота. Страницы в нем могут нести каждая свой набор дочерних компонентов; их можно переключать уже во время разработки.

Первый подход удобен, если на разных страницах у вас должны располагаться одни и те же компоненты, "начиненные" различными данными. Идеальный пример приводится самими разработчиками Delphi (папка Help\Samples\TabCntrl - обязательно посмотрите пример!). Здесь TTabControl используется для редактирования базы данных. Закладки для страниц создаются по одной для каждой записи в таблице. А на одной-единственной странице располагаются компоненты для отображения данных. При переключении закладок происходит навигация по таблице, содержимое полей меняется, и создается впечатление перехода на другую страницу.

Второй подход необходим, если у вас действительно разные страницы с различными наборами компонентов на них. Компонент TPageControl используют для создания редакторов свойств и настроек программы, а также для разного рода мастеров (Wizards).

Оба компонента в своей основе имеют общий элемент управления из библиотеки ComCtl32 (в документации Microsoft он называется Tab Control). Соответственно, в иерархии классов Delphi они оба произошли от класса TCustomTabControi, от которого унаследовали значительную часть свойств и методов. А вот механизмы работы отдельных страниц у каждого компонента свои. Поэтому сначала мы рассмотрим общие для двух компонентов свойства, а затем особенности использования страниц. Свойства и методы-обработчики класса-предка TCustomTabControi представлены в табл. 5.1 и 5.2 соответственно. Обратите внимание, что перечисленные свойства и методы в потомках объявляются как опубликованные (published).

Таблица 5.1. Основные свойства, общие для TTabControi и TPageControl

Объявление

Описание

property Tablndex:

Integer;

Задает номер текущей страницы, начиная сО

property TabHeight:

Smallint;

Задает высоту закладок в пикселах. При значении 0 высота определяется автоматически так, чтобы вместить текст

Таблица 5.1 (окончание)

Объявление

Описание

property TabWidth;
Smallint;

Задает ширину закладок. При значении 0 ширина определяется автоматически так, чтобы вместить текст

type TTabStyle = (tsTabs, tsButtons, tsFlatButtons) ;
property Style: TtabStyle;

Определяет стиль закладок компонента:

• tsTabs - стандартные закладки;
• tsButtons - объемные кнопки;

• tsFlatButtons - плоские кнопки

type TTabPosition = (tpTop, tpBottom, tpLeft, tpRight) ;
property TabPosition: TTabPosition;

Определяет расположение закладок на компоненте. Расположение, отличное от tpTop, возможно только для стиля tsTabs

property HotTrack: Boolean;

При значении True названия страниц выделяются цветом при перемещении над ними указателя мыши

property Images: TCustomlmageList;

Указывает на список картинок, появляющихся на закладках страниц

property RaggedRight: Boolean;

При значении True ширина закладок изменяется таким образом, чтобы они не занимали всю сторону блокнота

property MultiLine: Boolean;

При значении True закладки страниц могут располагаться в несколько рядов (если они не помещаются в один). При значении False в верхнем правом углу появляются кнопки, организующие прокрутку невидимых заголовков

property ScrollOpposite: Boolean;

При значении True, если закладки расположены в несколько рядов, при переходе к закладке следующего ряда все остальные ряды перемещаются на противоположную сторону блокнота. Действительно только при MultiLine=True

Таблица5.2. Основныеметоды-обработчики, общиедля TTabControl И TPageControl


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Июнь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс