Создает объект на основе определения класса или на основе средств автоматизации доступных OLE-приложений.

CREATEOBJECT(cClassName [, eParameter1, eParameter2, ...])

Параметры

ClassName

Задает класс или объект OLE, на основе которого будет создаваться новый объект. Visual FoxPro будет искать класс или объект OLE в следующем порядке:
  1. Среди базовых классов Visual FoxPro.

  2. Среди классов в текущей программе.

  3. Среди классов библиотек .VCX, открытых командой SET CLASSLIB.

  4. Среди классов в файлах процедур, открытых командой SET PROCEDURE.

  5. Среди классов в цепочке выполнения программ Visual FoxPro.

  6. В системном реестре (для объектов OLE), если SET OLEOBJECT установлена в ON (указывает, что Visual FoxPro просматривает реестр Windows Registry, когда объект найти не удается)

Объект OLE создается с использованием следующего синтаксиса имени ClassName:
  Скопировать код
ApplicationName.Class
Например, для создания электронной таблицы Microsoft Excel (с помощью средства автоматизации OLE), можно воспользоваться следующим синтаксисом:
  Скопировать код
x = CREATEOBJECT('Excel.Sheet')
После выполнения этого кода запустится Microsoft Excel (если он еще не работает) и будет создана новая электронная таблица. Библиотека классов может иметь псевдоним. Для задания объекта в библиотеке классов через псевдоним, нужно указать этот псевдоним и за ним через точку - имя объекта. Обратите внимание, что имя ClassName не может быть именем базового класса управления OLE-контейнера Visual FoxPro.
eParameter1, eParameter2, ...

Эти необязательные параметры используются для передачи значений в процедуру обработки события Init данного класса. Событие Init выполняется при выдаче функции CREATEOBJECT( ) и позволяет инциализировать объект.

Возвращаемое значение

Object

Замечания

Используйте функцию CREATEOBJECT( ) для создания объекта на основе определения класса или на основе приложения, поддерживающего автоматизацию OLE, и присваивайте ссылку на объект переменной памяти или элементу массива.

Перед созданием объекта на основе класса, определенного пользователем, этот класс должен быть предварительно создан командой DEFINE CLASS или доступен в библиотеке визуальных классов .VCX, открытой командой SET CLASSLIB.

Чтобы присвоить ссылку на объект переменной памяти или элементу массива, используйте оператор = или STORE. Если назначенный переменной памяти или элементу массива объект освобождается, эта переменная памяти или элемент массива содержит значение .NULL. Для удаления переменной памяти или элемента массива из памяти используйте команду RELEASE.

Пример

В следующем примере на основе базового класса Form системы Visual FoxPro с помощью команд DEFINE CLASS и CREATEOBJECT() создаются два пользовательских класса: FormChild and FormGrandChild. Функция ACLASS() используется для создания массива gaNewarray, содержащего имена классов, которые затем выводятся на экран.

  Скопировать код
CLEAR

* Verify current class library setting
cCurClassLib=SET("CLASSLIB")
IF LEN(ALLTRIM(cCurClassLib))=0
   cCurClassLib="None"
ENDIF

WAIT WINDOW "Current class library is: " + cCurClassLib + CHR(13);
   + "Press any key to continue..."

frmMyForm = CREATEOBJECT("FormGrandChild")

* Create an array
FOR nCount = 1 TO ACLASS(gaNewarray, frmMyForm)
   ? gaNewarray(nCount)  && Display the names of the classes
ENDFOR

RELEASE frmMyForm

* Create FormChild from FORM baseclass
DEFINE CLASS FormChild AS FORM
ENDDEFINE

* Create FormGrandChild from user-defined FormChild class
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE

Смотрите также