ПОНЯТНО О Visual Basic NET (том 3)

Полосы прокрутки (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 определяет положение шкалы на регуляторе.


    Содержание раздела