|
Офисное программирование - Элементы управления MultiPage, ScrollBar, SpinButton |
Страница 21 из 51
Коллекция 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).
|
|