Полосы прокрутки (ScrollBars) и ползунок (TrackBar)
Для определенности поговорим о горизонтальной полосе прокрутки (HScrollBar). Все сказанное будет полностью относиться и к вертикальной полосе (VScrollBar).
Поместите на форму горизонтальную полосу (вы можете ее видеть на Рис. 18.4). Запустите проект. Потаскайте бегунок мышкой или клавишами перемещения курсора. Вы, безусловно, знакомы с полосой прокрутки по другим приложениям Windows. Она используется в основном для того, чтобы прокручивать информацию в окне или же просто менять значение какой-нибудь величины.
Задача: Изменять с помощью полосы прокрутки значение переменной величины W в пределах от 20 до 80. При щелчке по стрелкам полосы или по клавишам перемещения курсора на клавиатуре значение переменной должно меняться на 4, а при щелчке по полосе слева или справа от бегунка значение переменной должно меняться на 10. После запуска проекта бегунок должен стоять на отметке 47.
Ваши действия: Создайте проект и поместите на форму метку и горизонтальную полосу прокрутки. Ее имя HScrollBar1. Установите в соответствии с числами из задания следующие свойства полосы:
- Minimum - 20
- Maximum - 80
- SmallChange - 4
- LargeChange - 10
- Value - 47
Вы можете сделать это в режиме проектирования или в коде – в процедуре Form1_Load. Проверьте правильность работы полосы, запустив программу:
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As ScrollEventArgs) Handles HScrollBar1.Scroll
Dim W As Integer
W = HScrollBar1.Value
Label1.Text = W
End Sub
Важное замечание: Вам никак не удастся вручную добраться до 80. Максимум, чего вы способны достигнуть, это 71. Таков закон работы полос прокрутки в VB – ближе, чем на значение LargeChange - 1, вы вручную до максимума не доберетесь (а в коде можно). Чтобы решить проблему, увеличьте немного Maximum или уменьшите до единицы LargeChange.
Событие Scroll возникает при любом ручном перемещении бегунка. Мышью вы можете перетаскивать бегунок и меньше, чем на SmallChange.
Задание 3.
Поместите рядом с полосой три метки:
Рис. 18.4
Левая метка должна указывать минимальное значение, правая – максимальное, средняя – текущее. Усложнение: Хорошо бы средняя метка бегала рядом с бегунком.
Как прокручивать окно полосами прокрутки. Попробуйте сымитировать работу графических редакторов. Там, если картинка не умещается в окне, окно прокручивается полосами прокрутки и в результате в поле зрения можно поместить любую часть картинки. Идея такова. Окно – это форма. Распахните форму пошире. Поместите в большое графическое поле (PictureBox) на этой форме большую картинку. Уменьшите теперь форму так, чтобы поле на нем не умещалось. Вот вам и нужная ситуация: картинка не умещается в окне. Поместите с правого края формы вертикальную полосу, а с нижнего – горизонтальную. Чтобы «прилепить» полосы к краям формы, обязательно используйте их свойство Dock. Теперь нужно добиться, чтобы при перемещении бегунков поле двигалось по форме в нужном направлении. Сделайте так, чтобы горизонтальная координата поля (PictureBox1.Left) была тем меньше, чем правее бегунок на горизонтальной полосе (она должна быть даже отрицательной). Для этого достаточно написать что-нибудь вроде:
PictureBox1.Left = - HScrollBar1.Value
Подобрав правильно численные значения свойств полосы, вы добьетесь нужного эффекта. Аналогично поступите с вертикальной координатой.
TrackBar. Внешний вид ползунка вы видите на Рис. 18.5. Его действие и свойства (Minimum, Maximum, SmallChange, LargeChange, Value) аналогичны действию и свойствам полосы прокрутки. Только свойство SmallChange относится к клавиатуре, а LargeChange – к мышке.
Рис. 18.5
Ползунок может располагаться и вертикально (свойство Orientation). Некоторое удобство придает наличие шкалы. Бегунок может перемещаться только по делениям шкалы. Расстояние между делениями определяет свойство TickFrequency (с учетом значений Minimum и Maximum). Свойство TickStyle определяет положение шкалы на регуляторе.