Краткий обзор базовых элементов управления в формах

На рисунке 1 показаны имена элементов управления, а в таблице 1 содержится их описание.

Кроме стандартного набора инструментов в распоряжении пользователя находится множество других элементов.

После размещения в форме требуемых элементов управления необходимо задать порядок перехода от одного элемента управления к другому. Порядок перехода определяет последовательность, в которой активизируются объекты при нажатии клавиши <Tab>.

Краткий обзор базовых элементов управления в формах - student2.ru Краткий обзор базовых элементов управления в формах - student2.ru Краткий обзор базовых элементов управления в формах - student2.ru Краткий обзор базовых элементов управления в формах - student2.ru

Рис 1. Панель элементов

Таблица 1.

Элементы управления набора инструментов

Элементы управления Использование/Описание
Поле (Edit Box) Отображает данные и используется для ввода информации
Надпись(Label) Отображает неизменяемый текст в формах, например заголовки для других элементов управления
Флажок(CheckBox) позволяет задать значение "Истина" или "Ноль"
Поле со списком (ComboBox) Используется либо для выбора нужного элемента из списка, либо для ввода значения в поле

Окончание табл. 1.

Элементы управления Использование/Описание
Список (ListBox) Позволяет создать список, содержащий требуемые значения
Кнопка (CommandButton) Создает кнопку, при нажатии которой выполняется команда
Переключатель (OptionButton) Используется для предоставления выбора одного варианта из многих
Рамка (Frame) Позволяет установить графическую или функциональную группировку элементов управления
Счетчик (Snipper) Используется для увеличения или уменьшения числовых значений
Рисунок (Image) Отображает в форме импортированный рисунок
Выключатель (Toggle) Создает кнопку, имеющую два состояния: включено и выключено

Элемент управления TextBox (Поле)позволяет ввести в форму информацию, которую затем можно использовать в программе или вывести данные.

После создания элемента управления рекомендуется сразу присвоить ему имя, иначе ему будет присвоено имя по умолчанию. При присваивании названий полей рекомендуется придерживаться следующего правила: txtИмяОбъекта.

Установка и получение содержимого поля

Типичными задачами при работе с полем является установка и получение содержимого. В программе необходимо обрабатывать текст, который пользователь ввел в элемент управления, но также часто бывает нужно вывести значение, которое извлечено из базы данных.

Свойство Valueиспользуется как для установки, так и для получения содержимого поля. Данное свойство имеет тип Variant.

Например, в поле заносится значение "ABCDEF":

txtMyControl.Value="ABCDEF"

или в поле заносится число 100:

txtMyControl.text=100

Для получения значения элемента управления TextBox можно использовать следующий фрагмент:

Dim varResult As Variant

varResult= txtMyControl.Value

Запрет доступа к полю

В некоторых случаях требуется запретить пользователю изменять содержимое поля, например, если объект TextBox используется для отображения доступной только для чтения информации, такой как имена файлов. Чтобы отключить поле, требуется присвоить его свойству Enabled значение False.Задавая для свойства Enabledзначение True, можно разрешить изменение содержимого поля.

Пример использования свойства Enabled:

txtMyControl.Enabled = False

или

txtMyControl.Enabled = True

Получение и установка выделенного в поле текста

Пользователь выделяет символы в элементе TextBox либо перетаскивая указатель мыши по тексту, либо используя клавиши <Left> или <Right>, одновременно удерживая нажатой клавишу <Shift>. Для хранения выбранного в поле текста используется свойство SelText.

Например,

Dim varSelected as Variant

VarSelected = txtMyControl.SelText

Для установления выделенного текста в программе используются свойства SelStart и SelLength элемента управления TextBox.

Например, программа выделяет слово "был":

Dim varText as text

varText = "У Мэри был ягненок"

txtMyControl.Value = varText

txtMyControl.SelStart =8

txtMyControl. SelLength =3

Автоматическая установка размеров поля

Для автоматической установки ширины поля можно присвоить свойству поля AutoSize значение True. При этом ширина поля уменьшается или увеличивается в зависимости от числа находящихся в нем символов.

Пример использования свойства AutoSize:

txtMyControl.AutoSize = True

Элемент управления Label (Надпись)используется для вывода текста в форме, например, заголовка, не имеющих собственного свойства Caption объектов формы, таких как поле или рисунок. В этом случае надпись находится около элемента управления, указывая на назначение элемента.

Добавление надписи в форму

Чтобы указать имя объекта Label, нужно нажать клавишу <F4> сразу после создания надписи, а затем ввести название объекта в поле Имя окна свойств.

Задание текста надписи

Наиболее важным свойством элемента управления Label является свойство Caption, содержащее текст надписи. Иногда требуется изменить текст надписи во время выполнения программы

Пример использования свойства Caption в программе:

MyLabelControl.Caption = "Адрес"

Элемент управления CommandButton (Кнопка)инициирует выполнение некоторого действия, например, запуск, остановку или прерывание процесса. Для указания имени объекта CommandButton нужно нажать клавишу <F4> сразу после создания кнопки, а затем ввести название объекта в поле Имя окна свойств.

Форматирование кнопки

Задание текста, выводимого на кнопке, устанавливается с помощью свойства Caption.

Например:

cbMyControl.Caption = "Нажми меня!"

Для получения текста, выведенного на кнопке:

Dim str_MyCaption As String

str_MyCaption = cbMyControl.

Если весь текст не умещается на поверхности кнопки, то он будет усекаться. Для автоматического изменения размеров объекта CommandButton используется свойство AutoSize:

cbMyControl.AutoSize = True

Задание кнопки по умолчанию

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

Например,

CbMyControl.Default=True

Нажатие кнопки

С нажатием кнопки можно связать выполнение некоторого действия, если назначить ее событию Click (Нажатие кнопки)процедуру обработки. Процедура обработки события Нажатие кнопкине имеет параметров. Например:

Private Sub cbMyButton_Click()

Debug.Print "кнопка нажата"

End Sub

Изменение состояния кнопки

Иногда требуется запретить пользователю нажатие кнопки, если оно приведет к нежелательным действиям. При запрете доступа кнопка становится серой. Для отключения объекта CommandButton используется свойство Enabled.

Пример программы показывает, как заблокировать кнопку, инициирующую печать, если принтер не работает:

Public Sub CheckPrinter()

If PrinterNotReady() Then

cbPrint.Enabled=False

GetPrinterReady()

End If

End Sub

Элемент управления ListBox (Список)применяется для хранения списка значений. В списке пользователь выбирает один или несколько элементов, которые затем используются в программе.

Задание выделенных элементов списка

В VBA имеется возможность задать число элементов в списке, которые можно выбрать одновременно. Если допускается выделение нескольких пунктов, то имеется возможность указать также, что выбранные элементы списка расположены либо последовательно, либо их порядок является произвольным. Способ выбора элементов определяется значением свойства MultiSelect. Его можно задать как в окне свойств, так и в программе. Описанным вариантам выделения соответствуют следующие значения:

Вариант Значение Константа
Один элемент FmMultiSelectSingle
Последовательные элементы FmMultiSelectExtended
Произвольно расположенные элементы FmMultiSelectMulti

Пример задания варианта выбора:

ListBox1.MultiSelect= fmMultiSelectExtended

Добавление элемента списка

Для добавления элементов списка используется метод AddItem.Для данного метода требуется задать параметр, который определяет строку с названием пункта:

ListBox.AddItem строка_элемента

Чтобы заполнить список числами, обычно используют цикл For ...Next:

Public Sub PopulateList()

For I=1 To 100

ListBox1.AddItem "Номер элемента: " + str$(I)

Next

End Sub

Определение выделенного элемента списка

Свойство Text элемента управления ListBox содержит выделенный в объекте пункт, если в списке задан выбор только одного элемента. Если в элементе ListBox допускается выбор нескольких элементов, то свойство Text равно пустой строке. Пример вывода выбранного элемента списка в окне отладки:

Debug.Print ListBox1.Text

Кроме этого, для определения выбранного в списке элемента используется свойство ListIndex. Оно содержит номер выделенного пункта. Для списков, в которых можно выбрать несколько элементов, в свойстве ListIndex хранится номер выделенного пункта:

Debug.Print "В списке выбран элемент: "

Debug.Print ListBox1.ListIndex

Определение нескольких выделенных элементов списка

При определении выделенных элементов в элементе управления ListBox, свойство MultiSelect которого равно FmMultiSelectExtended или FmMultiSelectMulti, требуется проверить каждый пункт, чтобы выявить, выбран он или нет. Для этого используется свойство списка Selected, которое при указании индекса проверяемого пункта возвращает результат проверки: True или False.

ListBox.Selected (индекс_пункта) = Boolean

Свойство ListCount содержит общее число элементов в списке ListBox1. Нижняя граница индексов этого объекта равна 0, поэтому требуется просмотреть все пункты, начиная с нулевого и заканчивая элементом с номером ListCount минус 1, который является номером последнего пункта в списке. Свойство List (индекс) объекта Listbox, в котором допускается выбор нескольких элементов, возвращает по номеру пункта его текст.

Пример определения нескольких выделенных элементов списка:

Private Sub CommandButton1_Click()

PopulateList1

End Sub

Private Sub CommandButton2_Click()

CopySelected

End Sub

Private Sub CopySelected()

For i = 0 To (Listbox1.ListCount - 1)

If Listbox1.Selected (i) Then

Listbox2.AddItem Listbox1 .List (i)

End If

Next

End Sub

Public sub PopulateList1()

For i = 0 To 100

ListBox1.AddItem "Номер: " & Str$ (i)

Next

End Sub

Удаление элементов списка

для этого используется метод RemoveItem объекта ListBox:

ListBox.RemoveItem (индекс_пункта)

Пример программы полной очистки списка:

Public Sub PopulateEmptyList()

For i = 0 To (ListBox1.ListCount-1)

ListBox1.RemoveItem i

Next

End Sub

Элемент управления ComboBox (Поле со списком)позволяет выбрать элемент из списка, либо ввести данные вручную. Текущее значение в поле со списком отображается в поле, а список возможных значений выводится при нажатии кнопки со стрелкой. Отличие объекта ComboBoxот объекта ListBox заключается в том, что в поле со списком можно явно выделить требуемое значение.

Типы полей со списком

В VBA имеется два типа элементов управления ComboBox. С помощью объектов первого типа можно ввести в поле данные, которые потом можно использовать как:

· Критерий выбора элементов в списке. При вводе символов, совпадающих с существующим пунктом списка, осуществляется перемещение на этот пункт. При этом используются свойства MatchEntry и MatchRecquired.

· Новое значение. В программе необходимо специально предусмотреть случай, когда введенного значения не имеется в списке.

С помощью объектов второго типа можно ввести в поле выбранный в списке элемент. В этом случае необходимо открыть список, нажав кнопку со стрелкой, а затем выбрать требуемый пункт списка. Элемент списка появляется в поле объекта ComboBox.

Тип объекта ComboBox можно указать с помощью свойства Style, допустимые значения которого приведены в таблице:

Тип Значение Константа
Ввод данных FmStyleDropDownCombo
Выбор значения из списка FmStyleDropDownList

Заполнение поля со списком

Для заполнения элемента управления ComboBox используется метод AddItem. Для данного метода требуется задать параметр, который определяет требуемый пункт:

ComboBox.AddItem строка_элемента

Пример программы добавления в список новых элементов:

Public Sub PopulateList()

ComboBox1.AddItem "125%"

ComboBox1.AddItem "100%"

ComboBox1.AddItem "80%"

ComboBox1.AddItem "50%"

ComboBox1.AddItem "12%"

End Sub

Установка и получение значения поля со списком

Чтобы получить или установить значение, хранящееся в текстовой части поля со списком, используется свойство Text объекта ComboBox. При присваивании значения данному свойству автоматически выполняются следующие действия:

· Заданный текст выводится в поле. Однако, если заданное значение не является элементом списка, то отображается сообщение об ошибке.

· Свойству ListIndex объекта ComboBox присваивается индекс элемента списка, соответствующего заданному значению.

Например, следующая программа выводит слово "красный" в окне отладки:

Private Sub UseForm_Click()

ComboBox1.AddItem "зеленый"

ComboBox1.AddItem "синий"

ComboBox1.AddItem "красный"

ComboBox1.AddItem "белый"

ComboBox1.Text ="красный"

I= ComboBox1.ListIndex

Debug.Print ComboBox1.List ( I )

End Sub

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

Например, следующая программа выводит слово "красный " в окне отладки дважды:

Private Sub UseForm_Click()

ComboBox1.AddItem "зеленый"

ComboBox1.AddItem "синий"

ComboBox1.AddItem "красный"

ComboBox1.AddItem "белый"

ComboBox1.ListIndex = 3

Debug.Print ComboBox1.Text

Debug.Print ComboBox1.Value

End Sub

Элемент управления CheckBox (Флажок)создает ячейку, которая может быть помечена пользователем, как имеющая значение истина или ложь. Флажок представляет собой маленький квадрат, с которым связан заголовок. Если квадрат пуст, то при щелчке по нему появляется галочка, и наоборот, если квадрат помечен галочкой, то при щелчке по нему галочка исчезает. Элемент управления CheckBox может иметь три состояния (ложь, истина и неопределенное значение). Неопределенному значению флажка с тремя состояниями соответствует значение Null.

Установка заголовка флажка

Свойство Caption позволяет установить текст, который появляется рядом с флажком. Данному свойству можно присвоить значение как в программе, так и в окне свойств.

Если заголовок флажка имеет большую длину, то можно присвоить свойству WordWrap значение True, чтобы разместить текст надписи в нескольких строках.

Определение состояния флажка

Для этого используют свойство Value, значение которого показывает, установлен флажок (True) или нет (False). Состояние флажка обычно используется в процедуре обработки события флажка Нажатие кнопки, либо при принятии решения о выполнении некоторого действия, например:

Private sub CheckBox1_Click()

If CheckBox1.Value = True Then

'операторы

Else

'операторы

End If

End Sub

Public Sub LaunchTask()

If CheckBox1.Value Then

'Действие А

Else

'Действие Б

End If

End sub

Элемент управления OptionButton (Переключатель)используется для предоставления выбора одного варианта из многих. На заданный момент в группе может быть выбран только один переключатель. Отмена выбора одного объекта OptionButton при выделении другого осуществляется автоматически, поэтому в программе это не требуется специально предусматривать. Объекты OptionButton иногда группируются в рамке.

Группировка переключателей

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

В VBA имеются два способа выполнения группировки переключателей:

· С помощью рамки. Все элементы управления OptionButton, расположенные в одном объекте Frame, рассмативаются как члены одной группы. Недостатком такого подхода является необходимость использовать дополнительную рамку для каждого набора переключателей.

· С помощью свойства GroupName. При выборе элемента управления OptionButton отменяется выбор всех переключателей, значение свойства GroupName которых совпадает со значением того же свойства выделенного объекта. Данный метод не требует создания дополнительных элементов управления и позволяет задать в форме произвольное число групп переключателей.

Значение свойства GroupName элемента управления OptionButton можно установить как в программе, так и в окне свойств.

Определение выбранного переключателя

Свойству Value выбранного пользователем переключателя автоматически присваивается значение True. Поскольку известно, какие переключатели входят в группу, необходимо просто проверить, свойство Value какого из них имеет значение True.

Пример программы выбранного переключателя:

Public Sub CheckOptionsButtons()

If OptionsButton1.Value Then

'операторы

ElseIf OptionsButton2.Value Then

'операторы

ElseIf OptionsButton3.Value Then

'операторы

End If

End Sub

Элемент управления Frame (Рамка)используется для группировки элементов управления в форме.

Свойства рамки

Поскольку элемент управления Frame имеет весьма ограниченный круг применения, у него есть всего несколько свойств и методов. Свойство Caption определяет текст, который появляется вверху рамки. Например:

Frame1.Caption = "Visual Basic"

Элемент управления SpinButton (Счетчик)используется для задания числового значения. Нажимая одну из двух кнопок счетчика, можно либо увеличить, либо уменьшить текущее значение в другом элементе управления, обычно в поле. Можно также установить значение счетчика непосредственно с клавиатуры.

Программирование счетчика.

Для изменения значения в связанном со счетчиком элементе управления необходимо использовать события, связанные с нажатием кнопок объекта SpinButton.

При нажатии кнопок элемента управления SpinButton возникают следующие события:

Private Sub SpinButton1_SpinUp()

End Sub

Private Sub SpinButton1_SpinDown()

End Sub

События SpinUp и SpinDown используются для изменения значения в связанном элементе управления. Свойство Value счетчика автоматически изменяется, когда пользователь нажимает его кнопку. Требуется написать процедуры, в которых при нажатии кнопки счетчика присваивается значение связанному со счетчиком объекту:

Private Sub SpinButton1_SpinUp()

TextBox1.Value = SpinButton1.Value

End Sub

Private Sub SpinButton1_SpinDown()

TextBox1.Value = SpinButton1.Value

End Sub

Пример использования счетчика для изменения названия месяца:

Private Sub SpinButton1_SpinUp()

TextBox1.Value = GetMonthName(SpinButton1.Value)

End Sub

Private Sub SpinButton1_SpinDown()

TextBox1.Value = GetMonthName (SpinButton1.Value)

End Sub

Private Fuction GetMonthName(iMonth As Integer) As String

If iMonth =13 Then

iMonth = 1

ElseIf iMonth =0 Then

iMonth = 12

End if

Select Case iMonth

Case 1

GetMonthName ="январь"

Case 2

GetMonthName ="февраль"

Case 3

GetMonthName ="март"

Case 4

GetMonthName ="апрель"

Case 5

GetMonthName ="май"

Case 6

GetMonthName ="июнь"

Case 7

GetMonthName ="июль"

Case 8

GetMonthName ="август"

Case 9

GetMonthName ="сентябрь"

Case 10

GetMonthName =" октябрь "

Case 11

GetMonthName ="ноябрь"

Case 12

GetMonthName ="декабрь"

End Select

End Function

Элемент управления SpinButton имеет три свойства, которые используются при изменении его значения:

· Max определяет максимальное значение элемента управления. При попытке увеличить значение счетчика, когда оно уже равно максимальному, значение не изменяется.

· Min определяет минимальное значение элемента управления. При попытке уменьшить значение счетчика, когда оно уже равно минимальному, значение не изменяется.

· Value изменяется при нажатии кнопки счетчика. Данное свойство можно задать как в программе, так и в окне свойств.

Элемент управления ToggleButton (Выключатель) создает кнопку, имеющую два состояния: включено и выключено.

Программирование выключателя

Свойство Value элемента управления ToggleButton имеет значение True, False или Null. В зависимости от конкретного случая можно либо выполнить некоторую операцию при изменении состояния выключателя, либо использовать значение свойства Value при запуске некоторой подпрограммы. В последнем случае можно передать подпрограмме состояние переключателя в качестве параметра.

Пример использования выключателя:

Public Sub ToggleButton1_Click()

If ToggleButton1.Value Then

'операторы

Else

'операторы

End If

End Sub

Public Sub SomeTask()

TaskName(ToggleButton1.Value)

End Sub

Выполнение лабораторной работы

1. Добавить форму в проект. Для этого:

· Выбрать имя проекта в окне проекта, в который требуется добавить форму;

· Выбрать команду Insert\UserForm, после чего выведется пустая форма и набор инструментов;

· Вывести окно свойств и задать свойства новой формы, например, (Name -Форма1, Caption - Форма1).

2. Просмотреть набор дополнительных инструментов и добавить один из их на панель инструментов проекта. Для этого:

· Открыть требуемую форму;

· Выбрать команду Tools\Additional Controls,после этого выводится диалоговое окноAdditional Controls;Сбросить флажок Selected Items Only (Только выделенные объекты) для вывода всех доступных дополнительных элементов;

· Выбрать требуемый элемент управления, установив флажок против его имени (например, Элемент управления "Календарь" 9.0)

· Нажать кнопку "ОК". Выбранный элемент будет выведен на панели элементов.

3. Разместить различные элементы управления в форме. Для этого:

· Выбрать форму, в которую требуется добавить элементы управления (Форма1), при необходимости вывести панель элементов;

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

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

4. Просмотреть внешний вид разрабатываемой формы. Для этого: Открыть форму и либо нажать клавишу F5, либо выполнить команду Rug Sub/UserForm

5. Выровнять элементы управления в форме. Для этого:

· Выделить несколько элементов управления (Щелкнуть по первому элементу, а затем, удерживая клавишу <Shift>, выделить другие объекты. Чтобы отменить выбор одного из выделенных объектов, нужно повторно щелкнуть по этому элементу, удерживая нажатой клавишу <Shift>);

· Выполнить команду Format\ Arrange Buttons\ Right (Формат\Выровнять по правому краю), а затем комаду Format\Make Same Size\Both (Формат\Выровнять\Размер\По ширине и высоте)

6. Задать порядок перехода от одного элемента управления к другому. Если элементы управления, для которых требуется задать порядок перехода, находятся в рамке, выберите рамку.

· Выбрать команду View\Tab Order,после чего в появившемся окне Tab Order расставить требуемым образом названия элементов управления в этом списке, выделив имя объекта и нажав кнопку "Move Up" или " Move Down".

· Нажать кнопку "ОК" для сохранения последовательности перехода, а затем клавишу <F5> для просмотра формы.

7. Связать объект в форме с кодом. Для этого дважды щелкнуть по элементу управления в форме. В появившемся окне модуля для выбранного объекта выберите событие, для которого требуется создать процедуру обработки, в списке, расположенном в верхнем правом углу окна модуля.

8. Создать и отладить VBA-код, связанный с элементом управления TextBox (Поле). Для этого:

· Создать новую форму (Name - Форма2, Caption - Форма2)

· Разместить в ней в следующей последовательности слева направо:
Поле (Name -Множимое, TabIndex - 1)

· Надпись (Caption - X, TabIndex - 0, Enabled - False)

· Поле (Name - Множитель, TabIndex - 2)

· Надпись (Caption - =, TabIndex - 0, Enabled - False)

· Поле (Name - Произведение, TabIndex - 3, Enabled - False)

· Связать поле Множимое и поле Множитель с кодом. Для этого дважды щелкните по соответствующему элементу управления и введите следующие тексты:

Private Sub Множимое_Change()

Dim a As Single

Dim b As Single

Dim c As Single

If Множитель.Value <> "" Then

a = Val(Множимое.Value)

b = Val(Множитель.Value)

c = a * b

Произведение.Value = Str(c)

End If

End Sub

Private Sub Множитель_Change()

Dim a As Single

Dim b As Single

Dim c As Single

If Множимое.Value <> "" Then

a = Val(Множимое.Value)

b = Val(Множитель.Value)

c = a * b

Произведение.Value = Str(c)

End If

End Sub

· Проверить работу этих программ нажатием клавиши F5 с последующим вводом чисел в поля.

9. Создать и отладить VBA-код, связанный с элементами управления CommandButton (Кнопка) и ListBox (Список). Для этого:

· Создать новую форму (Name-Форма3, Caption- Форма3)

· Разместить в ней элементы управления:

Список (Name - Список_дн)

· Поле (Name - Элемент)

· Кнопка (Name - Заполнение, Caption - Заполнение)

· Связать Список Список_дн и Кнопку Заполение с кодом. Для этого дважды щелкните по соответствующему элементу управления и введите следующие тексты:

Private Sub Заполнение_Click()

Список_дн.AddItem "Понедельник"

Список_дн.AddItem "Вторник"

Список_дн.AddItem "Среда"

Список_дн.AddItem "Четверг"

Список_дн.AddItem "Пятница"

Список_дн.AddItem "Суббота"

Список_дн.AddItem "Воскресенье"

End Sub

Private Sub Список_дн_Change()

Элемент.Text = Список_дн.Text

End Sub

· Проверить работу этих программ нажатием клавиши F5. Сначала нажать кнопку, а затем выбрать элемент из списка.

ЛАБОРАТОРНАЯ РАБОТА №4.

Наши рекомендации