Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

своем месте, прижимаясь к нижнему краю формы. Чтобы разобраться с этой проблемой, читайте следующий параграф.

8.4. Прокрутка

8.4.1. Прокрутка рабочей области формы

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

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

Форма имеет встроенную поддержку прокрутки, благодаря чему реализуется просмотр содержимого формы при любом изменении ее размеров. Когда размеры или координаты компонентов превышают размеры формы, форма создает полосы прокрутки и пользователь получает возможность прокручивать изображение. Встроенные в форму полосы прокрутки представлены составными свойствами HorzScrollBar (горизонтальная полоса прокрутки) и VertScrollBar (вертикальная полоса прокрутки). Они кратко описаны в таблице 8.12.

Свойство

ButtonSize Increment Margin Position Range Size

Smooth

Описание

Размер кнопок со стрелками.

Величина “информативной строки” в пикселах.

Минимальный отступ прокручиваемых элементов от края области прокрутки. Позиция бегунка на полосе прокрутки.

Виртуальный размер области прокрутки. Ширина полосы прокрутки.

Значение True указывает, что значение свойства Increment должно автоматически рассчитываться компонентом.

382

Style

ThumbSize

Tracking

Visible

Стиль полосы прокрутки: ssRegular — обычный рельефный, ssFlat — плоский, ssHotTrack — плоский с подсветкой при наведении указателя мыши.

Размер бегунка.

Если равно значению True, то прокрутка изображения происходит по мере передвижения бегунка.

Определяет, видна ли полоса прокрутки пользователю.

Таблица 8.12. Составные свойства HorzScrollBar и VertScrollBar

Наибольший интерес представляют вложенные свойства Tracking и Increment. Установка булевского свойства Tracking в значение True обеспечивает прокрутку изображения по мере передвижения бегунка с помощью мыши. Свойство Increment задает величину "информативной строки" в пикселях. Уменьшив это значение до 1, вы получите более плавную прокрутку.

8.4.2. Отдельная область прокрутки

Как ни крути, а форма не позволяет организовать прокрутку в отдельной своей части. Например, в приложении для просмотра графических файлов хотелось бы организовать прокрутку рисунка, но так, чтобы строка состояния в прокрутке не участвовала. Форма этого сделать не позволяет. Здесь на помощь приходит компонент ScrollBox, представляющий собой отдельную область прокрутки. Он расположен в палитре компонентов на вкладке Additional (рисунок 8.45).

Рисунок 8.45. Компонент ScrollBox

Таблица 8.13 содержит краткую характеристику его отличительных свойств.

Свойство

Align

AutoScroll

AutoSize

BevelEdges

BevelInner

Описание

Способ выравнивания области прокрутки в пределах владельца.

Если равно значению True, полосы прокрутки появляются и скрываются автоматически по мере необходимости.

Режим автоматического изменения размеров области прокрутки в зависимости от размеров и положения внутренних компонентов.

Вложенные свойства beLeft, beTop, beRight и beBottom определяют видимость соответственно левой, верхней, правой и нижней сторон рельефной рамки.

Внутренний скос рельефной рамки: bvNone — скос отсутствует, bvLowered — скос внутрь, bvRaised — скос наружу; bvSpace — скос заменяется отступом.

383

BevelKind

BevelOuter

BevelWidth

BorderStyle

DockSite

HorzScrollBar

VertScrollBar

OnGetSiteInfo

Вид рельефной рамки: bkNone — рамки нет, bkTile — рамка с четкими скосами, bkSoft — рамка со сглаженными скосами, bkFlat — плоская рамка (без скосов).

Внешний скос рельефной рамки: bvNone — скос отсутствует, bvLowered — скос внутрь, bvRaised — скос наружу; bvSpace — скос заменяется отступом.

Ширина скосов рельефной рамки. Определяет, имеет ли область прокрутки рамку.

Определяет, используется ли область прокрутки для стыковки других компонентов. Определяет параметры и поведение горизонтальной полосы прокрутки (см. табл. 6.10). Определяет параметры и поведение вертикальной полосы прокрутки (см. табл. 6.10). Происходит, когда у компонента запрашивается место для стыковки.

Таблица 8.13. Важнейшие свойства компонента ScrollBox

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

Шаг 50. Выделите на форме компонент Image и временно удалите его в буфер (команда меню Edit | Cut). Теперь опустите на форму компонент ScrollBox, выбрав его из палитры компонентов. Назовите новый компонент ScrollBox и подгоните его под всю незанятую область формы, установив свойство Align в значение alClient (рисунок 8.46).

Рисунок 8.46. Свойство Align обеспечивает подгонку компонента под размеры контейнера

384

Шаг 51. А сейчас переключитесь на форму (так, чтобы компонент ScrollBox остался выделенным) и вставьте из буфера обмена компонент Image (команда меню Edit | Paste). Убедитесь, что он находится в левом верхнем углу области прокрутки.

Готово. Выполните компиляцию и запустите приложение, загрузите в него какой-нибудь рисунок из каталога C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color. Увеличивая и уменьшая окно, понаблюдайте за тем, как появляются и исчезают полосы прокрутки между меню и строкой состояния (рисунок 8.47). Обратите внимание, что величина бегунков на полосах прокрутки зависит от соотношения видимой части и всего изображения. Это работает компонент ScrollBox. Правда, здорово! А самое главное — быстро и без единой строчки кода.

Рисунок 8.47. Программа для просмотра графических файлов теперь умеет прокручивать не уместившееся внутри окна изображение

8.4.3. Полосы прокрутки

Коль уж речь зашла о прокрутке, сделаем небольшое отступление и скажем пару слов о компоненте ScrollBar. Вы, наверное, еще раньше заметили его в палитре компонентов на вкладке Standard и сейчас не совсем понимаете, для чего он нужен (рисунок 8.48).

Рисунок 8.48. Компонент ScrollBar

ScrollBar — это отдельная полоса прокрутки без области прокрутки. Ее согласованная работа с другими компонентами обеспечивается программистом. Для этого в компоненте ScrollBar предусмотрено событие

385

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]