Создание объектных переменных
В предыдущей главе было показано, как получать доступ к объектам посредством объектной переменной. Также были изучены два метода объявления объектной переменной:
1. Объявление объектной переменной с ключевым словом New.
Private objectVar As New objectType
2. Объявление объектной переменной с последующим присваиванием ей объекта, который необходимо использовать:
Private objectVar As objectType
Set objectVar = New objectType
Оба метода требуют, чтобы Visual Basic знал тип объекта.
Можно ожидать, что Visual Basic знает о формах, элементах управления и других типах встроенных объектов, но что можно сказать об объектах, созданных разработчиком? Так как Visual Basic ничего не знает об вновь созданном объекте, необходимо обеспечить доступ проекта к объекту посредством добавления в него ссылки на этот объект. Например, если нужно добавить к проекту класс CTimer, откройте меню Project и выберите References. В появившемся диалоговом окне References найдите объект, на который нужно сослаться в коде, и нажмите ОК.
Если после добавления в проект новой ссылки открыть окно Object Browser, можно увидеть список Type Library (Библиотеку типов) с только что добавленным объектом. Выберите его в списке Type Library для просмотра классов, которые он предоставляет. Проект CTimer предоставляет один класс - CTimer. Щелкните на его имени для просмотра его членов.
Итак, пока к проекту не добавлена ссылка на определенный объект, невозможно объявить переменную этого типа. Существует третий метод объявления объектных переменных - функция Create0bject(), которая требует предоставления имен приложения и класса. Сначала объявите объектную переменную, а затем присвойте ей экземпляр объекта:
Private TMR As Object
Set TMR = CreateObject ("TimerProject.CTimer")
Оператор Set обычно помещается в событии Form_Load или в процедуре, которой необходим доступ к объекту. Можно заменить объявление объектной переменной TMR в тестовом приложении на способ, использующий функцию CreateObject. Остальная часть программного кода останется прежней.