Объект UserForm (диалоговое окно), коллекция UserForms (диалоговые окна)
В этой лекции мы рассмотрим основные объекты, связанные с организацией работы диалоговых окон. К ним относятся отдельные диалоговые окна, их коллекции и стандартные элементы управления, которые можно размещать в диалоговых окнах.
Объект UserForm (диалоговое окно или форма) - прямоугольное окно на экране с размещенными на нем элементами управления - важная часть пользовательского интерфейса. Создание и использование диалоговых окон было рассмотрено в предыдущей лекции. Здесь мы кратко опишем свойства класса UserForm и элементов управления.
Все загруженные в приложение диалоговые окна образуют коллекцию UserForms (диалоговые окна). Она обладает стандартными свойствами Count (Количество), Item (в других коллекциях Item часто выступает как метод, хотя суть от этого не меняется) и методом Add (Добавить). Значение свойства Count равно количеству элементов в коллекции; Item позволяет получить доступ к отдельному элементу коллекции (здесь Item - свойство "по умолчанию", т. е. может опускаться), метод Add (имя_формы) позволяет поместить в коллекцию новое диалоговое окно. Обращение к элементу коллекции имеет вид:
UserForms. Item. (index)
Или
UserForms (index)
Параметр index - число от 0 до UserForms. Count - 1, задающее номер элемента в коллекции. Во втором варианте определенное по умолчанию свойство Item опущено. Заметьте, коллекцию UserForms составляют не формы, спроектированные для работы с документом, а только загруженные формы, те, для которых был выполнен метод Load.
Как и другие объекты-коллекции, UserForms можно использовать для организации цикла по всем загруженным диалоговым окнам приложения. Выражение UserForms (index) можно подставлять как аргумент функции, имеющий тип диалогового окна UserForm
Эта коллекция корректно работает с действительно загруженными окнами, но дает странные результаты, когда загруженных форм нет. Вот небольшой пример работы с документом, имеющим две формы с именами frmMy1 и frmMy2:
Заметьте, вначале счетчик числа элементов коллекции показывает, что элементов там нет. После работы с формой в операторе Debug (но не ее загрузки) счетчик увеличивается на 1, также как и при выполнении метода Add. Однако в цикле по элементам коллекции заголовки форм не распечатываются - диалоговые формы не доступны.
С коллекциями диалоговых окон приходится работать редко. Чаще всего, работа идет с элементами этих коллекций. Для объектов класса UserForm (Диалоговое окно) определено около 40 свойств. Основные группы свойств и некоторые входящие в них свойства таковы:
имя диалогового окна: (Name) - имя, используемое при обращении к окну в программе;
положение окна на экране: Height (Высота), Width (Ширина), Left и Top - координаты верхнего левого угла;
картинка в окне: Picture - файл с изображением, PictureSizeMode - вариант размера картинки;
полоса прокрутки: ScrollBar - расположение полосы прокрутки в окне (0 - отсутствует, 1 - горизонтальная полоса, 2 - вертикальная, 3 - обе), ScrollHeight и ScrollWeidth - высота и ширина области прокрутки в диалоговом окне, ScrollLeft и ScrollTop - координаты верхнего левого угла области прокрутки;
шрифт: Font [значение этого свойства - объект типа шрифт (Font) ].
Выше мы описали процесс разработки диалогового окна. Заметьте, спроектированная форма определяет не один объект (экземпляр класса), а целый класс. Поэтому в программе можно объявлять несколько объектов данного класса и для каждого из них по-разному определять свойства диалогового окна. Вот простой пример:
Dim Myf1 As New frmMy1, Myf2 As New frmMy1, Myf3 As New frmMy2 Debug. Print Myf1. Name, Myf2. Caption, Myf3. Name Myf1. BackColor = vbGreen Myf2. Show Myf1. Show
Здесь определены три объекта, первые два из которых имеют один и тот же класс. Изменение цвета фона диалогового окна отражается только при показе первой формы, вторая ѕ сохраняет исходный цвет.