Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_VBA_1.doc
Скачиваний:
11
Добавлен:
03.05.2019
Размер:
1.01 Mб
Скачать

Элемент Флажок

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

Основное свойства Флажка – Value. Оно равно True, если флажок установлен, и False, если флажок не установлен. Свойство Caption содержит надпись, которая выводится рядом с элементом.

Основное событие для этого элемента – Click. Оно возникает при изменении свойства Value.

Элемент Выключатель

Элемент Выключатель (ToggleButton) предназначен для тех же целей, что и Флажок. Они отличаются только внешним видом. Выключатель имеет вид кнопки, которая может находиться в двух состояниях: отпущена или утоплена. На поверхности выключателя можно поместить рисунок. Для этого используется свойство Picture.

Элемент Переключатель

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

Для объединения переключателей в группу используются элементы–контейнеры, например, Рамка. Если группа одна, то контейнером может служить форма.

Основное свойства Переключателя – Value. Оно равно True, если позиция выбрана (помечена точкой), и False, если позиция не выбрана.

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

Практические задания Задание 5.1

Создайте приведенную форму. Для выбора операции используется группа переключателей, которая помещена в рамку. Операции выполняются для чисел, удовлетворяющих условиям. Для указания условий используется группа флажков. Все отмеченные условия должны выполняться для элемента одновременно. Выключатель «Условия» определяет, нужно ли проверять условия. Если он включен, то флажки для задания условий видны, и условия проверяются, в противном случае – флажки не видны, и условия не проверяются. В этом случае операции выполняются для всех элементов.

Операции выполняются для чисел, сгенерированных случайным образом. Они выводятся на форме. Количество чисел можно менять. Диапазон чисел (от –10 до 10) задается в момент инициализации формы. Результат операции выводится в поле «Результат». Если ни одно из чисел не удовлетворяет условиям, то выводится «нет эл.».

Проверка условия нам необходима во многих местах, поэтому она оформлена в виде функции. Функция возвращает значение True, если условие выполняется, и False – в противном случае. Если выключатель не нажат, то функция всегда возвращает значение True. Функция помещается в тот же модуль формы.

Public Function условие(X As Variant) As Boolean

If ToggleButton1.Value Then

условие = (Not (CheckBox1.Value) Or (X < 0)) And _

(Not (CheckBox2.Value) Or (X > 0)) And _

(Not (CheckBox3.Value) Or ((X >= -5) And (X <= 5))) And _

(Not (CheckBox4.Value) Or ((X Mod 2) = 0)) And _

(Not (CheckBox5.Value) Or ((X Mod 2) <> 0))

Else

условие = True

End If

End Function

Чтобы сделать в нужный момент флажки видимыми или невидимыми, обрабатывается событие Click для выключателя. Значение свойства Visible у флажков совпадает со значением свойства Value у выключателя: если выключатель нажат, то флажки видны, и наоборот. В момент проектирования их также следует установить одинаковыми. Private Sub ToggleButton1_Click()

CheckBox1.Visible = ToggleButton1.Value

CheckBox2.Visible = ToggleButton1.Value

CheckBox3.Visible = ToggleButton1.Value

CheckBox4.Visible = ToggleButton1.Value

CheckBox5.Visible = ToggleButton1.Value

End Sub

Процедура ОчередноеЗначение() предназначена для получения очередного случайного числа. Сгенерированное число присваивается аргументу, указанному при вызове процедуры, и записывается в строку, которая выводится в поле TextBox2. Процедуру нужно поместить в том же модуле формы.

Public Sub ОчередноеЗначение(Y As Integer)

Y = Int((A2 - A1 + 1) * Rnd + A1)

TextBox2.Text = TextBox2.Text & " " & Y

End Sub

Основные вычисления запрограммированы в процедуре обработки события Click для кнопки «Вычислить». Проверка, какой из переключателей выбран, выполняется с помощью условного оператора IF. Допишите в приведенной процедуре недостающие фрагменты. Обратите внимание, как выполняется начальное присваивание при нахождении номера максимального элемента. Для этого потребовалось написать дополнительный цикл, чтобы найти первый элемент, удовлетворяющий условию. Переменная R содержит результат. Во всех случаях, кроме последнего (подсчет среднего арифметического), её значение определяется с помощью функции IIf. В последнем случае это невозможно, т.к. у функции IIf всегда вычисляются все аргументы, и, следовательно, возникнет ошибка в том случае, когда C = 0.

Private Sub CommandButton1_Click()

Dim X As Integer

TextBox2.Text = ""

'Вычисление количества элементов

If OptionButton1.Value Then

C = 0

For i = 1 To TextBox1.Text

ОчередноеЗначение X

If условие(X) Then C = C + 1

Next

R = IIf(C = 0, "нет эл.", C)

'Вычисление номера первого элемента

ElseIf OptionButton2.Value Then

N = 0

P = True

For i = 1 To TextBox1.Text

ОчередноеЗначение X

If (условие(X) And P) Then N = i: P = False

Next

R = IIf(N = 0, "нет эл.", N)

'Вычисление номера последнего элемента

'…

'Вычисление номера максимального элемента

ElseIf OptionButton4.Value Then

N = 0

For i = 1 To TextBox1.Text

ОчередноеЗначение X

If условие(X) Then Max = X: N = i: Exit For

Next

For j = i + 1 To TextBox1.Text

ОчередноеЗначение X

If (условие(X) And X > Max) Then Max = X: N = j

Next

R = IIf(N = 0, "нет эл.", N)

'Вычисление номера минимального элемента

'…

'Вычисление среднего арифметического

ElseIf OptionButton6.Value Then

C = 0

S = 0

For i = 1 To TextBox1.Text

ОчередноеЗначение X

If условие(X) Then C = C + 1: S = S + X

Next

If C = 0 Then R = "нет эл." Else R = Format(S / C, "fixed")

End If

TextBox3.Text = R

End Sub

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