Проектирование интерфейса. Объекты диалоговых окон
Методы
Метод Add (Добавить)
Позволяет добавить элемент управления во время исполнения программы. С его помощью можно добавить страницу в набор страниц, вкладку в полосу вкладок или любой элемент управления на страницу или диалоговое окно.
Вызов метода Add для вставки страницы или вкладки имеет вид:
Set Object = объект. Add ([Name [, Caption [, index]]])
Для добавления элемента управления к диалоговому окну или странице используется присвоение:
Set Control = объект. Add (ProgID [, Name [, Visible]])
Здесь объект - имя объекта (коллекции), к которому добавляется элемент, Name - задает имя (свойство Name ) добавляемого объекта (если его нет, система присвоит добавленному элементу стандартное имя), Caption - задает заголовок страницы или вкладки, появляющийся на закладке, index - указывает положение страницы или вкладки в коллекциях Pages или Tabs, соответственно. ProgID - программный идентификатор добавляемого элемента, который представляет собой строку символов (без пробелов), идентифицирующую класс объектов. У этой строки структура обычно такова: <Поставщик>. <Компонента>. <Версия>. Программный идентификатор ProgID отображается на идентификатор класса ( CLSID ), т. е. на уникальный идентификатор ( UUID ), регистрируемый в системном реестре Windows. Необязательный булев параметр Visible указывает, виден ли объект на экране. По умолчанию он равен True (объект виден).
Вот значения программного идентификатора ProgID для стандартных элементов управления:
флажок | Forms. CheckBox. 1 |
комбинированный список | Forms. ComboBox. 1 |
командная кнопка | Forms. CommandButton. 1 |
рамка | Forms. Frame. 1 |
изображение | Forms. Image. 1 |
метка | Forms. Label. 1 |
список | Forms. ListBox. 1 |
набор страниц | Forms. MultiPage. 1 |
переключатель | Forms. OptionButton. 1 |
полоса прокрутки | Forms. ScrollBar. 1 |
счетчик | Forms. SpinButton. 1 |
полоса вкладок | Forms. TabStrip. 1 |
поле ввода | Forms. TextBox. 1 |
выключатель | Forms. ToggleButton. 1 |
Метод Add возвращает объект Page при вставке страницы в набор страниц и объект Tab при вставке вкладки в полосу вкладок. В остальных случаях он возвращает объект из класса, определяемого значением ProgID. После добавления элемента управления возбуждается событие AddControl.
Давайте добавим элемент управления к окну во время работы программы. Допустим, диалоговое окно InsertElem содержит командную кнопку cmbNewCtrl "Добавить элемент" и группу из двух переключателей: Opb1 "поле ввода" и Opb2 "список":
При выборе кнопки в окно будет вставляться в зависимости от того, какой из переключателей включен, либо два поля ввода с именами Text1 и Text2, первое из которых содержит приглашение "Введите имя", либо новый список NewList со списком имен.
Dim NewCtrl As Control Dim Inserted As Boolean Private Sub UserForm_Initialize () Inserted = False Opb1. Value = True End Sub Private Sub CommandButton1_Click () If Inserted = False Then If Opb1. Value = True Then ' выбрано поле ввода ' добавляем 2 поля ввода Set NewCtrl = Controls. Add ("Forms. TextBox. 1", "Text1") NewCtrl. Left = 96 NewCtrl. Top = 12 NewCtrl. Width = 80 NewCtrl. Height = 20 NewCtrl. Text = "Введите имя" Set NewCtrl = Controls. Add ("Forms. TextBox. 1", "Text2") Controls ("Text2"). Left = 96 Controls ("Text2"). Top = 50 Controls ("Text2"). Width = 80 Controls ("Text2"). Height = 20 Else ' добавляем список Set NewCtrl = Controls. Add ("Forms. ListBox. 1", "NewList") NewCtrl. Left = 96 NewCtrl. Top = 12 NewCtrl. Width = 80 NewCtrl. Height = 70 NewCtrl. AddItem ("Анна") NewCtrl. AddItem ("Елена") NewCtrl. AddItem ("Ирина") NewCtrl. AddItem ("Мария") End If Inserted = True Else: MsgBox ("Элемент уже добавлен!" & vbCrLf & "Второй добавить не могу!") End If End Sub13.1.
Вот результаты выбора командной кнопки при разных значениях переключателей:
Метод AddItem (Добавить элемент)
Этот метод позволяет добавлять элементы в списки и комбинированные списки. В списки с несколькими столбцами метод AddItem добавляет строку элементов. Его вызов имеет вид:
Перем = объект. AddItem ([Item [, varindex]])
или
объект. AddItem [Item [, varindex]]
Здесь Перем - переменная типа Variant, объект - объект-список, в который добавляется элемент, Item - добавляемый элемент, varindex - номер добавляемого элемента или строки. Первый элемент (строка) в списке имеет номер 0. Значение varindex не должно превышать числа элементов списка ListCount. Если этот параметр не задан, элемент вставляется в конец списка. Поскольку в первом случае Перем в результате вызова получает пустое значение Empty, чаще используется второй вариант вызова.
Если в списке несколько столбцов, вставляемая непустая строка содержит непустое значение элемента для первого столбца и пустые значения для остальных. Чтобы установить непустые элементы во втором и остальных столбцах, можно использовать свойство List. Например, если в примере с добавлением списка NewList требуется, чтобы этот список содержал два столбца: "имя" и "фамилия", то блок операторов для его создания может выглядеть так:
Else ' добавляем список AddElem. Width = 350 'Расширяем форму Set NewCtrl = Controls. Add ("Forms. ListBox. 1", "NewList") NewCtrl. ColumnCount = 2 'число столбцов списка NewCtrl. Left = 96 NewCtrl. Top = 12 NewCtrl. Width = 200 NewCtrl. Height = 70 NewCtrl. AddItem ("Анна") '1-ая строка, 1-ый столбец NewCtrl. List (0, 1) = "Павлова" '1-ая строка, 2-ой столбец NewCtrl. AddItem ("Елена") '2-ая строка, 1-ый столбец NewCtrl. List (1, 1) = "Образцова" '2-ая строка, 2-ой столбец NewCtrl. AddItem ("Ирина") '3-я строка, 1-ый столбец NewCtrl. List (2, 1) = "Архипова" '3-я строка, 2-ой столбец NewCtrl. AddItem ("Мария") '4-ая строка, 1-ый столбец NewCtrl. List (3, 1) = "Каллас" '4-ая строка, 2-ой столбец
Теперь диалоговое окно после добавления списка будет выглядеть так:
Для элементов, у которых установлен источник списка (свойство RowSource ), метод AddItem неприменим.
Метод Clear (Очистить)
Этот метод удаляет все объекты, входящие в некоторый объект или коллекцию объектов. Из списка и комбинированного списка Clear удаляет все элементы списков, т. е. делает их пустыми. Из элементов набор страниц и полоса вкладок им удаляются все страницы и вкладки. Из коллекции элементов управления Controls метод Clear удаляет элементы, созданные при исполнении программы методом Add. Попытка удалить элементы, созданные на этапе проектирования приводит к ошибке. Нельзя также "чистить" элементы, данные которых связаны с основным объектом приложения, например, списки с установленным свойством RowSource. Вызов метода имеет вид:
объект. Clear
где объект - очищаемый объект или коллекция объектов.
Метод Copy (Копировать)
Этот метод выполняет копирование содержимого объекта в буфер обмена. Что именно копируется, зависит от объекта. Для поля ввода и комбинированного списка копируется выделенный в текущий момент текст. Для диалогового окна, страницы и рамки копируются активные (выбранные) в данный момент элементы. Вызов метода имеет вид:
объект. Copy
где объект - объект, для которого вызывается метод.
Копирование объекта не изменяет его.
Метод Cut (Вырезать)
В результате вызова этого метода информация, выделенная в объекте, удаляется из него и помещается в буфер обмена. Для поля ввода и комбинированного списка удаляется и копируется в буфер текст, выделенный в текущий момент. Для диалогового окна, страницы и рамки удаляются активные (выбранные) в данный момент элементы. Удаляться могут лишь те элементы, что созданы в процессе работы программы. Вызов метода имеет вид:
объект. Cut
где объект - объект, для которого вызывается метод.
Пример применения метода Cut приведен ниже при описании метода Paste.
Метод DropDown (Вывести список)
Раскрывает список элементов, входящих в комбинированный список. Вызов этого метода имеет вид:
объект. DropDown
где объект - тот комбинированный список, для которого вызывается метод.
Метод DropDown можно использовать, чтобы показать список элементов из комбинированного списка в ответ на событие, возникшее в другом управляющем элементе. Мы включили в наше диалоговое окно еще одну возможность, ѕ добавлять комбинированный список. Вот новый фрагмент кода:
Else 'добавляем комбинированный список AddElem. Width = 350 'Расширяем форму Set NewCtrl = Controls. Add ("Forms. ComboBox. 1", "List2") Controls ("List2"). ColumnCount = 2 'число столбцов списка Controls ("List2"). Left = 96 Controls ("List2"). Top = 12 Controls ("List2"). Width = 200 Controls ("List2"). AddItem ("Федор") Controls ("List2"). List (0, 1) = "Шаляпин" Controls ("List2"). AddItem ("Сергей") Controls ("List2"). List (1, 1) = "Лемешев" Controls ("List2"). AddItem ("Лучано") Controls ("List2"). List (2, 1) = "Паваротти" Controls ("List2"). AddItem ("Пласидо") Controls ("List2"). List (3, 1) = "Доминго" Controls ("List2"). DropDown
Теперь диалоговое окно при добавлении комбинированного списка выглядит так: