если свойство boundColumn равно 0, то свойство value возвращает индекс выбранной строки;
    если свойство boundColumn принимает значение из диапазона от 1 до количества столбцов в списке, то свойство value возвращает элемент из выбранной строки, стоящей в столбце, определенном свойством boundcolumn.
   Наиболее часто используемые методы элемента управления ListBox:
   clear – удаляет все элементы из списка;
   RemoveItem (index) – удаляет из списка элемент с указанным номером, где index – номер элемента;
   AddItem ([item[,varIndex]]) – добавляет элемент в список, где item – элемент (строковое выражение), добавляемый в список, и varIndex – номер добавляемого элемента.
   Заполнить список можно одним из следующих способов.
 
   Поэлементно, если список состоит из одной колонки
   With ListBox1
   AddItem «июнь»
   AddItem «июль»
   AddItem «август»
   ListIndex=0
   End With
   Массивом, если список состоит из одной колонки
   With ListBox1
   List=Array(«июнь»,"июль","август")
   ListIndex = 1
   End With
   Из диапазона A1:B4, в который предварительно введены элементы списка. Результат выбора (индекс выбранной строки) выводится в ячейку С1
   With ListBox1
   ColumnCount = 2
   RowSourse = «A1:B4»
   ControlSourse = «C1»
   BoundColumn=0
   End With
   Поэлементно, если список состоит из нескольких колонок, например двух
   With ListBox1
   ColumnCount = 2
   AddItem «июнь»
   List(0,1)="сессия"
   AddItem «июль»
   List(1,1)="каникулы"
   AddItem «август»
   List(2,1)="отработка"
   End With
   Массивом, если список
   состоит из нескольких
   колонок, например двух
   Dim A(2,1) As string
   A(0,0) = «июнь»
   A(0,1) = «сессия»
   A(1,0) = «июль»
   A(1,1) = «каникулы»
   A(2,0) = «август»
   A(2,1) = «отработка»
   With ListBox1
   ColumnCount = 2
   List = A
   End With
Задачи на закрепление материала
    Пример 20. Создать программу, которая при вводе имени пользователя и числа от 1 до 10 в текстовые поля формы выдает в метку label1 предсказание в зависимости от введенного значения.
   При разработке программы использовать одномерный массив, объявляемый в процедуре Fortuna, содержащей все возможные предсказания.
    Технология выполнения
   1. Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
   2. Создайте форму (рис. 38).
   3. Пропишите обработчики событий нажатия на кнопки « Вывести предсказание» и « Закрыть».
 
    Рис. 38.Форма примера 20 в рабочем состоянии
 
   При обработке процедуры нажатия кнопки Вывестиможно опираться на нижеприведенный листинг.
    Примечание.Обратите внимание на создание процедуры, содержащей массив предсказаний, и вызов этой процедуры из процедуры нажатия кнопки « Вывести предсказание», учитывая «защиту от дурака».
   Sub fortune(a As String, b As Integer)
   Dim today(1 To 10)
   today(1) = «Вы станете богатым и знаменитым за 15 минут»
   today(2) = «Вам предстоит обед с незнакомцем»
   today(3) = «Стоимость Ваших вкладов удвоится!»
   today(4) = «Вы получите большой букет от своего почитателя»
   today(5) = «Вы опоздаете на пару»
   today(6) = «Все Ваши мечты сбудутся»
   today(7) = «Вам вернут долг»
   today(8) = «Вы выучите лекцию и ответите на опрос»
   today(9) = "Вы встретите своего давнего знакомого»
   today(10) = «На Вас обратят внимание»
   Label3.Caption = a & «, Вас ожидает следующее:» & today(b)
   End Sub
   Private Sub CommandButton1_Click()
   Dim a As String
   Dim b As Integer
   a = TextBox1.Text
   b = Val(TextBox2.Text)
   If b > 0 And b <= 10 Then
   Call fortune(a, b)
   Else: Label3.Caption = «Вы ввели не то число!»
   End If
   End Sub
   4. Откомпилируйте программу.
   5. Запустите приложение на выполнение.
    Пример 21. Создать форму, в текстовые поля которой вводятся имя и пароль. Если пароль введен правильно, то пользователь получает доступ к списку некоторой группы, отражаемой в элементе listbox, при этом выдается сообщение о допуске пользователя к списку. Список организуется программно.
    Технология выполнения
   1. Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
   2. Создайте форму (рис. 39).
 
    Рис. 39.Форма примера 21 в рабочем состоянии. Сообщение о допуске
 
   3. Переименуйте форму с Name на frmOne. Для этого активизируйте форму (щелкните на ней), перейдите в окно свойств объекта (properties), выделите свойство Name (первая строка) и пропишите frmOne.
   4. Создайте текстовые поля textbox1 и textbox2. Первое будет использоваться для ввода имени, второе – для ввода пароля, поэтому переименуйте их на txtNameи txtPassword(аналогично пункту 3).
   5. Как правило, вводимый пароль не отображается в поле. Чтобы вводимые символы пароля заменялись звездочками, выделите поле пароля, затем в окне Propertiesнайдите свойство PasswordCharи задайте для него значение «*».
   6. Добавьте кнопки. Переименуйте первую кнопку на btnOK. Кнопка OK должна быть кнопкой по умолчанию. Это означает, что на нажатие клавиши Enter форма должна реагировать так же, как и на щелчок этой кнопки. Для этого измените значение свойства Defaultкнопки btnOK на True.
   7. Переименуйте вторую кнопку на btnCancel. Щелчок кнопки Cancelобычно эквивалентен нажатию клавиши Escape. Чтобы в вашем окне было именно так, задайте значение «True» для свойства Cancel.
   8. Создайте процедуру закрытия формы.
   9. Создайте процедуру работы кнопки ОК. В заготовке процедуры
   Private Sub btnOK_Click()
   End Sub
   вставьте оператор MsgBox Txtname & «получил(а) доступ». В этом операторе текст, введенный в поле txtName, объединяется с поясняющей строкой и выводится в информационном окне.
   10. Создайте процедуру для проверки пароля. Закроем доступ к кнопке OK, пока не введен верный пароль. Для этого измените свойство Enabledкнопки OK на False(доступ к кнопке закрыт) и введите новую процедуру:
   Private Sub CheckOK()
   Const pas = «abc» 'Пароль
   If Txtpassword = pas Then 'Если текст в поле
    Txtpasswordсовпадает с паролем, то btnOK.Enabled = True 'доступ к кнопке OK открыт
   Else 'иначе
   btnOK.Enabled = False 'доступ к кнопке OK закрыт
   End If
   End Sub
   Процедура должна запускаться при вводе нового пароля. Для этого в окне формы щелкните дважды второе текстовое поле (предназначенное для пароля). В появившуюся процедуру
   Private Sub Txtpassword_Change()
   End Sub
   введите единственную команду CheckOK, которая при внесении любых изменений в поле пароля будет запускать процедуру проверки пароля.
   11. Заполните список группы. Расположите на форме элемент управления ListBox.По умолчанию его имя ListBox1. Оставим его в таком виде. Заполнить список можно в операторе With:
   With ListBox1
   List = Array(«Иванова Марина», «Гончарова Елена», «Зотова Татьяна», «Кринченко Светлана», «Орлов Сергей», «Петров Александр»)
   End With
   Здесь List– свойство элемента ListBox, которое является массивом. Вставьте этот оператор в уже имеющуюся процедуру btnOK_Click.
   12. Проверка работы формы. После запуска формы введите свое имя и верный пароль. Должна стать доступной кнопка ok. После ее нажатия появляются сообщение «Имя получил(а) доступ» и заполненный список. После нажатия кнопки Закрытьформа должна закрыться.
Дополнительные задания
   13. Дополните список с помощью метода AddItem. Синтаксис:
   ИмяСписка. AddItem «новый элемент списка».
   14. Обработайте событие, связанное со щелчком по форме (мимо элементов управления). Пусть в ответ на это выводится какое-нибудь сообщение типа «Вы не попали по кнопке!».

4.2. Элементы управления ComboBox, OptionButton и Frame

Поле со списком
   Элемент управления СотbоВох
   (поле со списком) создается с помощью соответствующего элемента. Элемент управления СотЪоВохприменяется для хранения списка значений. Он сочетает в себе функциональные возможности списка ListBoxи поля TextBox.В отличие от ListBox,в элементе управления СотЪоВохотображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значение, используя поле ввода, как это делает элемент управления TextBox.
   Свойства объекта ComboBox, такие как ListIndex, ListCount, Enabled, List, и методы Clear, RemoveItem и AddItem аналогичны соответствующим свойствам и методам списка ListBox. Кроме того, у него есть ряд уникальных свойств:
   DropButtonStyle – устанавливает вид раскрывающегося списка. Допустимые значения:
    fmDropButtonStylePlain – кнопка без символов;
    fmDropButtonStyleArrowDisplays – кнопка со стрелкой;
    fmDropButtonStyleEllips – кнопка с эллипсом;
    fmDropButtonStyleReduce – кнопка с линией.
   ListRows – устанавливает число элементов, отображаемых в раскрываемом списке.
   MatchRequired – допустимые значения: True (нельзя ввести значения) и False (в противном случае).
   MatchFound – допустимые значения: True (среди элементов раскрывающегося списка имеется элемент, совпадающий с вводимым в поле ввода раскрывающегося списка) и False (в противном случае).
Переключатель и рамка
   Элемент управления OptionButton
   (переключатель) создается с помощью соответствующего элемента. Он позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта (см. п. 3.3).
   Элемент управления Frame
   (рамка) создается с помощью соответствующего элемента. Он используется для визуальной группировки элементов управления. Основным свойством рамки является caption,отображающее надпись рамки.
Задачи на закрепление материала
    Пример 22. [1] Создать программу, которая позволяет при выделении из списка формы нескольких чисел производить суммирование, находить произведение или среднее значение в зависимости от выбора действия (операции).
   Нажатие кнопки «Вычислить» должно привести к выполнению выбранной операции над выбранными числами и выводу результата в поле «Результат» (рис. 40).
 
    Рис. 40.Разработанная форма примера 22 в рабочем состоянии
 
    Технология выполнения
   Обсудим, как приведенная ниже программа решает перечисленные пункты задачи и что происходит в программе.
   UserForm_Initialize
   1. Активизирует диалоговое окно
   2. Запрещает ввод данных в поле Результат.
   3. Связывает с кнопками Вычислитьи Закрыть, а также с переключателями всплывающие подсказки
   Нажатие кнопки Вычислитьзапускает на выполнение процедуру CommandButton1_Click
   Определяет, какой переключатель выбран. В зависимости от выбранного переключателя производит действие над выбранными в списке числами. Найденное число выводится в поле Результат
   Нажатие кнопки Закрытьзапускает на выполнение процедуру CommandButton2_Click
   Закрывает диалоговое окно
 
   Процедура нажатия кнопки «Вычислить»производит вычисления с элементами списка в зависимости от выбранной операции. Вводятся переменные n и i, где n играет роль счетчика числа выбранных элементов из списка, а i – вспомогательная переменная. Также вводятся переменные, которые будут содержать результат вычислений: сумма, произведениеи среднее. Все полученные вычисления присваиваются переменной Результат, которая и выдается в текстовое поле.
 
    Процедура нажатия кнопки Вычислить
   Private Sub CommandButton1_Click ()
   Dim i As Integer
   Dim n As Integer
   Dim Сумма As Double
   Dim Произведение As Double
   Dim Среднее As Double
   Dim Результат As Double
   ' При выборе первого переключателя вычисляется сумма
   If OptionButton1.Value = True Then
   Сумма = 0
   With ListBox1
   For i = 0 To.ListCount – 1
   If.selected(i)=true then
   Сумма = Сумма +.List(i)
   End if
   Next i
   End With
   Результат = Сумма
   End If
   ' При выборе второго переключателя вычисляется произведение выбранных элементов
   If OptionButton2.Value = True Then
   Произведение = 1
   With ListBox1
   For i = 0 To.ListCount – 1
   If.Selected(i)=True Then
   Произведение =Произведение *.List(i)
   End if
   Next i
   End With
   Результат = Произведение
   End If
   ' При выборе третьего переключателя вычисляется среднее арифметическое
   If OptionButton3.Value = True Then
   Среднее = 0
   n = 0
   With ListBox1
   For i =0 To.ListCount – 1
   If.Selected(i)=True Then
   n=n+1
   Среднее = Среднее +.List(i)
   End if
   Next i
   End With
   Результат = Среднее /n
   End If
   ' Полученное значение Результатвыводится в текстовое поле
   TextBox1.Text = CStr(Format(Результат, «Fixed»))
   End Sub
    Процедура нажатия кнопки «Закрыть»
   Private Sub CommandButton2_Click()
   UserForm1.Hide
   End Sub
   Процедура инициализации диалогового окна заключается в заполнении списка и выводе его на форме, организации всплывающих подсказок, запрещении ввода текста в поле результата на форме.
   Private Sub UserForm_Initialize()
   With ListBoxl
   List = Array(1, 3, 4, 5, 6, 7, 8, 10)
   Listlndex = 0 'начальная индексация массива
   MultiSelect=fmMultiSelectMulti
   End With
   ' Первоначальный выбор переключателя Суммапри инициализации диалогового окна и задание текста всплывающих подсказок у переключателей With OptionButton1.Value = True
   ControlTipText ="Сумма выбранных элементов"
   End With
   OptionButton2.ControlTipText ="Произведение выбранных элементов"
   OptionButton3.ControlTipText = «Среднее значение выбранных элементов»
   ' Поле Результат не доступно для пользователя
   TextBox1.Enabled = False
   ' Назначение клавише <Enter> функции кнопки Вычислитьи задание текста всплывающей подсказки
   With CommandButton1
   Default = True
   ControlTipText = «Нахождение результата»
   End With
   ' Назначение клавише <Esc> функции кнопки Закрыть и задание текста всплывающей подсказки
   CommandButton2.Cancel = True
   ' Задание заголовка пользовательской формы
   UserForm1.Caption = «Операции над элементами списка»
   UserForm1.Show
   End Sub
    Примечание.Интересной особенностью приводимой процедуры инициализации UserForm_initialize является то, что заголовок диалогового окна вводится программно при помощи свойства Caption, а не вручную при помощи окна Properties.
    Пример 23. Разработать программу нахождения среднего балла студентов, выбранных из списка в диалоговом окне «Средний балл». Список содержит фамилию студента и его средний балл (двумерный массив) (рис. 41).
 
    Рис. 41.Разработанная форма примера 23 в рабочем состоянии
 
   Дополнительно для каждого элемента управления следует прописать процедуры для осуществления всплывающих подсказок.
   При выполнении задания опирайтесь на приводимые ниже примечания.
    Примечание.Обратите внимание на то, что в отличие от примера 22 данный пример требует ввода двумерного списка: столбца фамилий и столбца оценок. Фактически разница заключается лишь в том, что в приведенном примере массив ListBoxl.List, отвечающий за список элементов, был одномерным, а в данном случае должен быть двумерным. Сделать это можно двумя способами:
    непосредственно заполнить двумерный массив ListBoxl.List;
    задать произвольный двумерный массив, а затем присвоить его значение для ListBoxl.List (см. п. 3.1 и 4.1).
   Соответственно, для расчета среднего балла следует воспользоваться только элементами второго столбца массива, т. е. вторая координата массива ListBoxl.List должна быть фиксирована на 1 (если индексация массива положена с нуля) или на 2 (если индексация массива положена с 1).

4.3. Элементы управления MultiPage, ScrollBar, SpinButton [2]

Коллекция Controls
   Для доступа к набору элементов управления диалогового окна можно использовать коллекцию Controls, включающую все элементы управления окна. Каждый элемент управления имеет в этой коллекции индекс, значение которого может быть числом или строкой. Для первого элемента управления индекс равен 0. Числовые индексы определяются порядком размещения элементов в коллекции. Строковое значение индекса соответствует имени (Name) элемента.
    Пример 24. Создать форму, имеющую пять элементов: метка, текстовое поле, список, две кнопки. Ввести в текстовое поле и список по умолчанию текст «поле 1», «список 1» (свойство text соответственно у каждого элемента). Первая кнопка «Нажми» выполняет следующее действие: вызывается диалоговое окно, в котором запрашивается разрешение на удаление очередного элемента формы (их пять). Ответ «да» или «нет» выполняет соответствующее действие. Кнопка «Закрыть» закрывает диалоговое окно.
    Примечание.Используя коллекцию Controls, программно в цикле организовать скрытие (не удаление!) элементов управления диалогового окна MyForm (свойство Name формы).
    Технология выполнения
   1. Запустите приложение Word, сохраните новый документ.
   2. Создайте форму в режиме конструктора (рис. 42).
 
    Рис. 42.Форма примера 24
 
   3. Обработайте кнопки Нажмии Закрыть.
    Кнопка Нажми
   Private Sub CommandButton1_Click()
   For Each Ctrl In myForm.Controls 'цикл по всем элементам управления
   msgCode = vbYesNo + vbQuestion
   'Вопрос об очередном элементе управления:
   Answer = MsgBox(prompt:="Cкрыть элемент " & Ctrl.Name,
   Buttons:=msgCode, Title:="Bonpoc")
   If Answer = vbYes Then 'ответ «Да»
   Ctrl.Visible = False 'скрыть очередной элемент
   End If
   Next Ctrl
   End Sub
    Кнопка Закрыть
   Private Sub CommandButton2_Click()
   Unload Me
   End Sub
   4. Откомпилируйте приложение.
   5. Запустите на выполнение (рис. 43, 44, 45).
    Примечание.Скрытие ненужных элементов в форме можно произвести и другим способом (например, если в форме слишком много элементов, то до нужного добираться по циклу нерационально). Для этого используют свойство Click элементов управления.
 
    Рис. 43.Первоначальный запуск формы и вызов процедуры кнопки Нажми
    Рис. 44.Выполнение скрытия элемента label1 и следующий запрос
 
    Рис. 45.Вид формы перед удалением последнего элемента управления
 
   В этом случае необходимо только щелкнуть по нужному элементу и прописать код, для каждого элемента свой:
   Private Sub Label1_Click()
   msgCode = vbYesNo + vbQuestion
   Answer = MsgBox(prompt:="Cкрыть элемент",
   Buttons:=msgCode, Title:="Вопрос")
   If Answer = vbYes Then
   Label1.Visible = False
   Else
   Label1.Visible = True
   End If
   End Sub
   В результате работа формы будет более рациональной (рис. 46).
 
    Рис. 46.Работа формы по щелчку скрываемого элемента
Набор страниц MultiPage
   Элемент управления MultiPage объединяет несколько независимых диалоговых окон – страниц (вкладок). Заголовки страниц обычно видны на одной из сторон элемента на их закладках, а переход на страницу происходит после щелчка по ее закладке. Этот простой переход с одной страницы на другую и делает MultiPage удобным средством для представления разнородных данных, относящихся к одному объекту. Такие данные в «бумажных» офисах хранятся обычно в отдельных папках и образуют дела, досье и т. д. Каждая страница из Multipage – это объект типа Page, а все они включены в коллекцию Pages (страницы). При создании элемента MultiPage в него автоматически помещаются две страницы с именами Page1 и Раgе2. Имена можно изменять, присутствует возможность добавления и новых страниц. Рассмотрим основные свойства набора страниц.
    Свойство count определяет, какое количество страниц возвращается.
    Свойство value для элемента multipage определяет номер текущей активной страницы в коллекции pages.
    Свойство selecteditem (его можно только читать) возвращает текущую активную страницу (как объект). Его можно использовать для считывания и установки свойств этой страницы и входящих в нее элементов управления.
    Свойство style определяет, в каком виде представляются заголовки страниц. По умолчанию оно равно fmtabstyletabs = 0 и задает представление заголовков в виде закладок в полосе заголовков. Каждая закладка с заголовком находится внутри границ своей страницы. Если значение fmtabstylebuttons = 1, то заголовок каждой страницы находится на отдельной кнопке, расположенной в полосе заголовков. Переход на страницу происходит после выбора кнопки с ее заголовком. Если же значение fmtabstylenone = 2, то полоса с заголовками страниц на экран не выводится.
    Свойство taborientation задает расположение полосы с заголовками страниц (табл. 13).
 
    Таблица 13
Значения свойства TabOrientation
 
    Булево свойство multirow позволяет создать несколько полос с закладками (по умолчанию его значение равно false, что соответствует одной полосе закладок).
    Свойства tabfixedheight и tabfixedwidth устанавливают или возвращают высоту и ширину закладки (в точках). При значении 0 ширина закладок устанавливается автоматически, так чтобы в каждой закладке помещалось ее название и занимало всю ширину элемента. При значениях больше 0 у всех закладок одинаковые размеры, заданные свойством TabFixedWidth. Минимально возможный размер закладки – 4 точки.
   Для того чтобы редактировать свойства элемента MultiPage, необходимо выделить этот элемент так, чтобы рамка вокруг элемента выделилась точками (рис. 47). Для этого щелкните по самой рамке, если она выделена черной штриховкой.
 
    Рис. 47.Рамка элемента multipage
 
   Если необходимо установить свойства самих вкладок, необходимо щелкнуть по ним, после чего рамка станет выделяться черной штриховкой (рис. 48).
 
    Рис. 48.Рамка элемента page
 
   Если необходимо добавить еще одну вкладку в режиме конструктора, то необходимо щелкнуть правой кнопкой мыши по последней вкладке (странице) и выбрать команду New Page (рис. 49).
 
    Рис. 49.Добавление новой страницы
 
   Если необходимо переименовать страницу, ввести всплывающие подсказки и установить номер активной по умолчанию страницы, необходимо выбрать команду Rename (рис. 49), в результате которой появляется диалоговое окно, где устанавливаются перечисленные свойства (рис. 50 и 51).
 
    Рис. 50.Установление свойств вкладки
 
    Пример 25. Создать форму, включающую в себя ряд вкладок (страниц), содержащих вопросы некоторого теста. На каждой странице находятся очередной вопрос и кнопка «Ответ», фиксирующая выбор правильного (неправильного) ответа. После перехода на следующую страницу (щелчок по корешку страницы с соответствующим именем) действия повторяются. Итоговая страница содержит кнопку «Результат», которая выводит правильность ответов и сумму набранных баллов (1 правильный ответ = 1 балл).
 
    Рис. 51.Свойства в действии
 
   Создать программу, выполняющую все требования примера.
    Технология выполнения
   1. Запустите приложение Word и сохраните документ.
   2. Перейдите в редактор VBA и создайте форму, содержащую 4 страницы (рис. 52).
 
    Рис. 52.Первая страница теста
 
   3. Оформите первую страницу (рис. 52) и обработайте кнопку «Ответ».
   Dim a As Integer
   Private Sub CommandButton1_Click()
   If OptionButton3.Value = True Then
   a = a + 1
   Label11.Caption = «Ответ верен»
   Else
   Label11.Caption = «Oтвет неверен»
   End If
   End Sub
   4. Оформите вторую страницу теста (рис. 53) и обработайте кнопку «Ответ».
   Private Sub CommandButton2_Click()
   If OptionButton5.Value = True Then
   a = a + 1
   Label12.Caption = «Ответ верен»
   Else
   Label12.Caption = «Ответ неверен»
   End If
   End Sub
    Рис. 53.Вторая страница теста
 
   5. Оформите третью страницу теста (рис. 54) и обработайте кнопку «Ответ».
 
    Рис. 54.Третья страница теста
   Private Sub CommandButton3_Click()
   If OptionButton10.Value = True Then
   a = a + 1
   Label13.Caption = «Ответ верен»
   Else
   Label13.Caption = «Ответ неверен»
   End If
   End Sub
   6. Оформите четвертую страницу теста (рис. 55) и обработайте кнопку «Результат».
   Private Sub CommandButton4_Click()
   Label15.Caption = "вы набрали " & a & «балл(а)»
   End Sub
    Рис. 55.Итоговая страница теста
 
    Примечание.Напоминаем, что все предлагаемые листинги примерные и их можно и нужно редактировать по своему усмотрению.
   7. Откомпилируйте программу и запустите на выполнение.
Полоса прокрутки ScrollBar
   Элемент управления ScrollBar представляет собой вертикальную или горизонтальную полосу, по краям которой расположены кнопки прокрутки, а внутри перемещается бегунок. Значение Value, устанавливаемое в полосе прокрутки или возвращаемое ей, – число, определяемое положением бегунка и границами, определенными в свойствах Min и Мах. Рекомендуемые значения этих границ – от –32 767 до + 32 767 (по умолчанию установлен диапазон [0, 32 767]).
   Обычно полоса прокрутки используется в паре с другим элементом управления (textbox), в котором она может отображать или от которого может получать свое значение.
   Свойства полосы прокрутки следующие.
    Горизонтальная или вертикальная ориентация полосы прокрутки определяется свойством orientation. При его значении по умолчанию fmorientationauto = –1, ориентация полосы определяется автоматически в зависимости от ее размера по горизонтали и вертикали (больший размер задает ориентацию). Значение fmorientationvertical = 0 задает вертикальную ориентацию полосы, fmorientationhorizontal = 1 – горизонтальную.