Listlndex = 0 'начальная индексация массива
MultiSelect=fmMultiSelectMulti
End With
' Первоначальный выбор переключателя Сумма при инициализации диалогового окна и задание текста всплывающих подсказок у переключателей With OptionButton1.Value = True
ControlTipText ="Сумма выбранных элементов"
End With
OptionButton2.ControlTipText ="Произведение выбранных элементов"
OptionButton3.ControlTipText = «Среднее значение выбранных элементов»
' Поле Результат не доступно для пользователя
TextBox1.Enabled = False
' Назначение клавише функции кнопки Вычислить и задание текста всплывающей подсказки
With CommandButton1
Default = True
ControlTipText = «Нахождение результата»
End With
' Назначение клавише функции кнопки Закрыть и задание текста всплывающей подсказки
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()
Читать дальше
Конец ознакомительного отрывка
Купить книгу