Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ch01.doc
Скачиваний:
26
Добавлен:
03.09.2019
Размер:
350.72 Кб
Скачать

Полоса прокрутки

Продолжим рассмотрение элементов управления и следующий элемент, который мы разберем — “Полоса прокрутки”. Сразу перейдем к разработке интерфейса очередного примера. Откроем новую книгу, и на листе расположим две полосы прокрутки и два текстовых окна (рис. 1.40). Левая полоса прокрутки вместе с левым текстовым окном предназначена для отображения показателей работы одного из менеджеров (для определенности Петрова), а аналогичные правые элементы для отображения показателей работы другого (Сидорова). Передвижением движка левой либо правой полосы прокрутки руководитель может установить показатель работы менеджера. Это будет числовое значение от 0 до 100. Одновременно с этим текстовое окно по вертикали займет соответствующее положение.

Рис. 1.40. Пример использования полосы прокрутки

Для левого текстового окна выберем Petrov в качестве значения свойства Name, а у левой полосы прокрутки для аналогичного свойства установим значение ScrollPetrov. Соответственно у правого текстового окна свойство Name — Sidorov, а у правой полосы прокрутки Name — ScrollSidorov.

У полосы прокрутки часто используются следующие свойства:

  • Value — значение, соответствующее положению ползунка (движка) на полосе прокрутки;

  • Max — значение, соответствующее нижнему (или правому при горизонтальной полосе прокрутки) положению ползунка;

  • Min — значение, соответствующее верхнему (или левому при горизонтальной полосе прокрутки) положению ползунка;

  • SmallChange — значение, соответствующее изменению значения Value при щелчках по стрелкам полосы прокрутки;

  • LargeChange — значение, соответствующее изменению значения Value при щелчках по полосе прокрутки.

У текстового окна (как у любого другого элемента) есть свойство Top, которое определяет положение элемента по вертикали, начиная от верхнего края листа. А при изменении положения движка левой полосы прокрутки автоматически выполняется процедура ScrollPetrov_Change(). Для правой полосы соответственно — ScrollSidorov_Change().

Теперь более точно сформулируем задачу для программной разработки. Будем считать, что у нас в подчинении работают два менеджера и необходимо ежедневно сопоставлять результаты их работы. Скажем, количественная оценка каждого сотрудника изменяется в интервале от 0 до 100 баллов. Технически для отражения результата работы менеджера руководителю необходимо передвинуть движок соответствующей линейки прокрутки. В этом случае текстовое окно должно синхронно перемещаться на листе по вертикали, а самом окне отображаться количество баллов. При этом, когда движок соответствует верхнему положению, текстовое окно должно располагаться на уровне верхней границы полосы прокрутки. Соответственно, при нижнем положении движка текстовое окно должно располагаться на уровне нижней границы полосы прокрутки. Для реализации этого в окне свойств для полос прокрутки установим значение Min равным 0, а значения Max и Height равными 100. Установим также для этих элементов : SmallChange = 1 и LargeChange = 5.

Теперь можно написать процедуры, которые выполняются при передвижении движков левой (листинг 1.23) и правой (листинг 1.24) полос прокрутки.

Листинг 1.23. Процедура, выполняемая при перемещении движка левой линейки

Private Sub ScrollPetrov_Change()

Petrov.Top = ScrollPetrov.Value + ScrollPetrov.Top

Petrov.Text = "Петров " + CStr(ScrollPetrov.Value)

Inten = 155 + ScrollPetrov.Value - ScrollPetrov.Min

Petrov.ForeColor = RGB(Inten, Inten, Inten)

Petrov.BackColor = RGB(0, Inten, 0)

End Sub

Листинг 1.24. Процедура, выполняемая при перемещении движка правой линейки

Private Sub ScrollSidorov_Change()

Sidorov.Top = ScrollSidorov.Value + ScrollSidorov.Top

Sidorov.Text = "Сидоров " + CStr(ScrollSidorov.Value)

Inten = 155 + ScrollSidorov.Value - ScrollSidorov.Min

Sidorov.ForeColor = RGB(Inten, Inten, Inten)

Sidorov.BackColor = RGB(inten, 0, 0)

End Sub

Перед тем как прокомментировать работу программы, полезно еще раз посмотреть на результат ее работы (рис. 1.40). Кроме синхронного с движками полос прокрутки перемещения текстового окна по вертикали, изменяется сообщение в этом окне, и меняются цвета фона и основного текста. Так, при верхнем положении движка, цвет букв и фона более бледный, а при перемещении движка вниз цвета становятся более яркими. Поясним теперь некоторые конструкции этих процедур. Пояснения сделаем по тексту, представленному на листинге 1.23.

В строке

Petrov.Top = ScrollPetrov.Value + ScrollPetrov.Top

производится изменение положения текстового окна в соответствии с положением движка. Фактически это приводит к перемещению текстового окна по вертикали.

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

После этого в следующих трех строках производится изменение фонового и основного цвета текстового окна. Как уже ранее отмечалось, интенсивность цвета меняется от 0 до 255. В результате выполнения этих строк максимальная интенсивность зеленого цвета для фона обеспечивается при нижнем крайнем положении движка. Для основного цвета интенсивность также будет максимальной. При другом крайнем положении движка интенсивности устанавливаются равными 155. Зеленый фон в этом случае станет более бледным, а цвет букв серым.

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