Объект 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:
Public Sub PropOfForm ()
Dim MyForm As UserForm
Debug. Print UserForms. Count
Debug. Print frmMy1. Name, frmMy1. Caption
Debug. Print UserForms. Count
UserForms. Add ("frmMy1")
Debug. Print UserForms. Count
For Each MyForm In UserForms
Debug. Print MyForm. Caption
Next MyForm
UserForms. Add ("frmMy2")
Debug. Print UserForms. Count
End Sub
Приведем результаты отладочной печати:
0
frmMy1 Первая
1
2
3
Заметьте, вначале счетчик числа элементов коллекции показывает, что элементов там нет. После работы с формой в операторе Debug (но не ее загрузки) счетчик увеличивается на 1, также как и при выполнении метода Add. Однако в цикле по элементам коллекции заголовки форм не распечатываются - диалоговые формы не доступны.
С коллекциями диалоговых окон приходится работать редко. Чаще всего, работа идет с элементами этих коллекций. Для объектов класса UserForm (Диалоговое окно) определено около 40 свойств. Основные группы свойств и некоторые входящие в них свойства таковы:
-
имя диалогового окна: (Name) - имя, используемое при обращении к окну в программе;
-
положение окна на экране: Height (Высота), Width (Ширина), Left и Top - координаты верхнего левого угла;
-
изображение окна: BackColor (Цвет фона), Forecolor (Цвет переднего плана), BorderColor (Цвет рамки), Caption (Заголовок) ;
-
картинка в окне: Picture - файл с изображением, PictureSizeMode - вариант размера картинки;
-
полоса прокрутки: ScrollBar - расположение полосы прокрутки в окне (0 - отсутствует, 1 - горизонтальная полоса, 2 - вертикальная, 3 - обе), ScrollHeight и ScrollWeidth - высота и ширина области прокрутки в диалоговом окне, ScrollLeft и ScrollTop - координаты верхнего левого угла области прокрутки;
-
шрифт: Font [значение этого свойства - объект типа шрифт (Font) ].
События: Activate, Deactivate, AddControl, BeforeDragOver, BeforeDropOrPaste, Click, DblClick, Error, KeyDown, KeyUp, KeyPress, Layout, MouseDown, MouseUp, MouseMove, RemoveControl, Scroll, Terminate, Zoom.
Методы: Copy, Cut, Hide, Load, Move, Paste, PrintForm, RedoAction, Repaint, Scroll, SetDefaultTabOrder, Show, UndoAction, Unload.
Выше мы описали процесс разработки диалогового окна. Заметьте, спроектированная форма определяет не один объект (экземпляр класса), а целый класс. Поэтому в программе можно объявлять несколько объектов данного класса и для каждого из них по-разному определять свойства диалогового окна. Вот простой пример:
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
Здесь определены три объекта, первые два из которых имеют один и тот же класс. Изменение цвета фона диалогового окна отражается только при показе первой формы, вторая ѕ сохраняет исходный цвет.
- Объект Debug и его методы
- Метод Print
- Метод Assert
- Доказательство правильности программ
- Условная компиляция и отладка
- Директива #const
- #If … Then … #Else директива
- Ошибки периода выполнения и их обработка
- Модель управления ошибками в языке vba.
- Оператор On Error
- Оператор Resume
- Объект Err
- Метод Clear
- Метод Raise
- Класс и обработка ошибок
- Обработчики ошибок и вложенные вызовы процедур
- Структура обработчика ошибок
- Функция CvErr
- Оптимизация программ
- Приемы оптимизации кода
- Объявление переменных
- Математические операции
- Строковые операции
- Проектирование интерфейса. Меню
- Общие объекты Office 2000
- Коллекция CommandBars
- Свойства и методы коллекции CommandBars
- Свойства и методы объекта CommandBar
- Коллекция CommandBarControls и ее элементы
- О роли интерфейса
- Создание собственных и модификация встроенных меню
- Немного терминологии
- Возможности настройки и изменения системы меню
- Создание собственного головного меню
- Использование диалогового окна Настройка
- Создание меню с помощью vba
- Добавление выпадающих меню
- Использование диалогового окна Настройка
- Как добавить встроенное меню
- Добавление выпадающего меню с помощью vba
- Добавление подменю
- Вставка и группировка команд
- Добавление встроенной команды с помощью окна Настройка
- Добавление собственной команды с помощью окна Настройка
- Добавление команд с помощью vba
- Пример построения документа с собственным меню
- Группировка команд меню
- Удаление команд меню
- Удаление команды с помощью окна Настройка
- Удаление команды с помощью vba
- Как восстановить удаленные встроенные компоненты меню
- Изменение меню во время работы программы
- Вывод собственной панели меню
- Динамическое изменение видимости команд меню
- Управление доступом к командам меню
- Переименование команды меню
- Диалоговые окна и элементы управления
- Общие сведения и применение
- Встроенные диалоговые окна Коллекция Dialogs и объект Dialog
- Вывод сообщений. Функция MsgBox
- Окно ввода данных. Функция InputBox
- Создание пользовательских диалоговых окон
- Создание страниц и вкладок в диалоговых окнах
- Добавление дополнительных элементов управления
- Пример создания диалогового окна
- Разработка процедур, обрабатывающих события диалогового окна и его устройств
- Вызов собственного диалогового окна
- Установка начальных значений свойств элементов управления
- Использование Me в качестве имени текущего диалогового окна
- Модификация управляющих элементов во время работы
- Управление доступом к элементу
- Перемещение фокуса на элемент управления
- Изменение размеров диалогового окна
- Проверка корректности данных
- Обмен данными с диалоговым окном
- Закрытие диалогового окна
- Объект UserForm (диалоговое окно), коллекция UserForms (диалоговые окна)
- Коллекция Controls
- Объекты - элементы управления Перечень основных элементов управления
- Общие свойства элементов управления Объект-родитель
- Имя объекта
- Значение объекта
- Расположение объекта
- Параметры внешнего вида объекта
- Свойства поведения объекта
- Другие свойства
- CheckBox - флажок (кнопка выбора)
- ComboBox - комбинированный список
- CommandButton - командная кнопка
- Frame - рамка (группы)
- Image - изображение
- Label - метка (надпись, статический текст)
- ListBox - список
- MultiPage - набор страниц
- OptionButton - кнопка-переключатель
- ScrollBar - полоса прокрутки
- SpinButton - счетчик
- TabStrip - полоса вкладок
- TextBox - поле ввода (окно редактирования)
- ToggleButton - выключатель
- Объект DataObject
- Перемещение объектов. Как реализовать технику DragAndDrop
- События Событие AddControl (добавился элемент)
- Событие AfterUpdate (После модификации)
- Событие BeforeDragOver (Перед завершением перетаскивания)
- Событие BeforeDropOrPaste (Перед опусканием или вставкой)
- Событие BeforeUpdate (Перед модификацией)
- Событие Change (Изменение)
- Событие Click (Щелчок)
- Событие DblClick (Двойной щелчок)
- Событие DropButtonClick (Щелчок кнопки списка)
- События Enter, Exit (Вход, Выход)
- Событие Error (Ошибка)
- События KeyDown, KeyUp (Клавиша нажата, Клавиша отпущена)
- Событие KeyPress (Клавиша нажата)
- Событие Layout (Расположение)
- События MouseDown, MouseUp (Мышь нажата, Мышь отпущена)
- Событие MouseMove (Мышь движется)
- Событие RemoveControl (Удаление элемента)
- Событие Scroll (Прокрутка)
- События SpinDown (Уменьшить счетчик), SpinUp (Увеличить счетчик)
- Событие Zoom (Расширение)
- Методы Метод Add (Добавить)
- Метод AddItem (Добавить элемент)
- Метод Clear (Очистить)
- Метод Copy (Копировать)
- Метод Cut (Вырезать)
- Метод DropDown (Вывести список)
- Метод Move (Сдвинуть)
- Метод Paste (Вставить)
- Реализация операций Cut, Copy, Paste в диалоговых окнах
- Метод RedoAction (Повторить действие)
- Метод Remove (Удалить)
- Метод RemoveItem (Удалить элемент)
- Метод Repaint (Перерисовать)
- Метод Scroll (Прокрутить)
- Метод SetDefaultTabOrder (Установить стандартный порядок обхода)
- Метод SetFocus (Установить фокус)
- Метод UndoAction (Отменить действие)
- Реализация операций Undo и Redo в диалоговых окнах
- Метод zOrder (z-упорядочить)
- Основные виды файлов в Office 2000
- Открытие и создание файлов
- Закрытие файлов
- Запись в файлы последовательного доступа
- Чтение файлов последовательного доступа
- Ввод-вывод для файлов произвольного доступа и бинарных файлов
- Работа с данными переменной длины
- Один пример работы с Binary файлом