Указывает имя создаваемого класса и родительского класса, используемого для создания нового класса. Кроме того,  позволяет клиентам Automation обращаться к классу, когда он включен в сервер автоматизации.

DEFINE CLASS ClassName1 AS ParentClass [OF ClassLibrary] [OLEPUBLIC]
[Other DEFINE CLASS clauses]

Параметры

DEFINE CLASS ClassName1 AS ParentClass

Указывает имя создаваемого класса и родительского класса, используемого для создания класса. Родительский класс может быть базовым классом Visual FoxPro, таким как класс Form или иным, определенным пользователем классом или субклассом. Кроме того,  вы можете создать субкласс из классов Exception и Session в дополнение к базовым классам Visual FoxPro.

NoteЗамечание

Если вы указываете класса Custom в качестве  ParentClass, Visual FoxPro создает невизуальный, определенный пользователем класс. Если вы указываете Session в качестве  ParentClass, Visual FoxPro создает невизуальный пользовательский класс, который обслуживает свою собственную сессию данных. Когда вы указываете Session в качестве  ParentClass, то опция ADD OBJECT становится недоступной, так как объект Session не является контейнером. Для получения более подробной информации смотрите описание объекта Session.

Для получения более подробной информации о базовых классах Visual FoxPro смотрите описание  Базовые классы в Visual FoxPro.

Кроме того, вы можете использовать опцию AS при применения строгой типизации. Функциональные возможности IntelliSense доступны для объектов и ссылочных переменных только в том случае, когда они строго типизированы. Для получения более подробной информации смотрите описание задачи Как: применить строгую типизацию для класса, объекта и переменной в коде.

[OF ClassLibrary]

Позволяет вам указать библиотеку класса для опции AS ParentClass, без необходимости явного указания пути к библиотеке класса, которая содержит упоминаемый класс, как это требуется, например, для использования команд SET CLASSLIB или SET PROCEDURE. ClassLibrary может быть файлов библиотеки класса (.vcx), программным файлов  (.prg) илм скомпилированным программным файлов (.fxp).

Указанная ClassLibrary может содержать относительный путь поскольку Visual FoxPro может искать библиотеку по пути поиска своих библиотек классов. Если Visual FoxPro не сможет найти указанную ClassLibrary, когда вы пытаетесь создать экземпляр класса, то Visual FoxPro сгенерирует ошибку.

Visual FoxPro автоматически добавит ClassLibrary в проект во время процесса сборки, если программа, содержащая класс, включена в проект.

При использовании опции OF ClassLibrary, убедитесь, что текущая программа не имеет того же самого имени класса, что и указанная в опции OF ClassLibrary.

NoteЗамечание

Если ссылка OF <ProgramFile> используется в программа, которая заключена внутри исполняемого приложения, имя <ProgramFile> должно иметь расширение файла .fxp, а не .prg.

[OLEPUBLIC]

Определяет, что клиенты автоматизации могут обращаться к классу, когда он включен в сервер автоматизации.

NoteЗамечание

Если вы включили ключевое слово OLEPUBLIC в определени класса, чей базовый класс представляет собой класс Session, то библиотека типов, генерируемая для исполнимых файлов (.exe) или файлов dynamic-link library (.dll) содержит только ваши собственные свойства и методы. Все внутренние свойства, методы и события базового класса Session исключаются из библиотеки типов. ТАкое поведение поддерживается в Visual FoxPro 7.0 или более поздних выпусках.

Если вы добавляете в проект программу с определением класса, созданным как OLEPUBLIC, вы можете создать файл .exe или .dll, содержащий класс интерактивно с помощью  Project Manager (Диспетчера проекта), команд BUILD EXE, BUILD DLL  или BUILD MTDLL. Файлы .exe или .dll регистрируются операционной системой автоматически и становятся доступными любому клиенту автоматизации. Для получения более подробной информации смотрите описание задач Как: создавать сервера автоматизации, Как: собирать приложения, команд BUILD EXE, BUILD DLL или BUILD MTDLL.

ENDDEFINE

Указывает завершение определения класса.

Expand imageПримечания

Expand imageПример

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