Определяет метод и функции событий и процедуры для определения класса.
[[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name[_ACCESS |_ASSIGN] ([cParamName | cArrayName[] [AS Type][@]]) [AS Type] [HELPSTRING cHelpString] | THIS_ACCESS(cMemberName) [NODEFAULT] cStatements [ENDFUNC | ENDPROC]] |
Параметры
- [[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name [_ACCESS | _ASSIGN]
- Определяет события и методы для создания в определения класса. События и методы создаются как функции или процедуры. Вы можете создать функцию события или процедуру, чтобы обработать событие. Для подробной информации, см. Пользовательские Процедуры и Функции , FUNCTION Команда , и PROCEDURE Команда .
Обратите внимание: Вызов функций событий и процедур выполняет код, определенный для этих функций и процедур, но не вызывает срабатывания события непосредственно. Обратите внимание: Вы должны объявить каждый защищенный метод на отдельной строке. Обратите внимание: Массивы передаются в метды Access и Assign тем же самым способом как в стандартные процедуры Visual FoxPro. Для подробной информации, см. Передача Данных в Параметры .
- ([ cParamName | cArrayName [] [AS Type ][@]]) [AS Type ]
- Специфицирует один или более параметров для передачи аргументов в метод класса или события или определяет имя массива, используемого, чтобы создать библиотеку типов.
Обратите внимание: При определении массива, Вы должны использовать скобки ([]). DEFINE CLASS не распознает круглые скобки (()). Скопировать код PROCEDURE Test(oRS AS ADODB.Recordset @) AS ADODB.Recordset
Скопировать код Recordset Test([in, out] Recordset** oRS);
Обратите внимание: Для массивов, Вы не можете определить ссылку на ProgID, который сгенерирован из библиотеки типов. Например, Вы не можете ссылаться на класс, который содержится в том же самом COM сервере. Обратите внимание: По умолчанию, данные передаются в параметры определяемых пользователем процедурах по ссылке, а в определяемых пользователем функциях - по значению. Чтобы передавать массив целиком, Вы должны передать его по ссылке. Для подробной информации, см. Передача Данных в Параметрах . Обратите внимание: Вы можете использовать первое AS предложение для строгого контроля типов, использования возможностей IntelliSense, и для сохранения информации определения класса в библиотеке типов (OLEPUBLIC). Однако, Visual FoxPro не осуществляет контроль соответствия типов при трансляции или выполнении кода, так что Вы должны удостовериться в том, что Вы используете допустимые типы данных. Для массивов, строгий контроль типов используется прежде всего для создания библиотеки типов и не осуществляется в run time. Используя предложение cArrayName [] [AS Type ] [] , Вы можете определить строгий контроль типов для массивов, так что они могут быть правильно написаны как безопасные массивы в библиотеке типов. Строгое типизация также рекомендуется для использованиясовместно с методами интерфейса, указанными предложением IMPLEMENTS . Для подробной информации, см. Как: Обеспечить Строгий контроль типов для кода Класса, Объекта, и Переменных . Обратите внимание: Вы не можете определить массивы как типы для возвращения. Например, в то время как следующий код является допустимым, он возвращает библиотечный тип как VARIANT и не SAFEARRAY: Скопировать код PROCEDURE GetWidgets() AS aWidgets[] ENDPROC
Совет: Если метод не возвращает значение, используйте AS VOID как возвращаемое значение. Это требуется для некоторых технологий типа Microsoft COM+, Services Queued Components. Скопировать код FUNCTION myMeth(parm1 AS Integer @, parm2 AS String) AS Integer ENDFUNC
- [HELPSTRING cHelpString ]
- Определяет строку, чтобы добавить её к библиотеке типов как описание функциональных возможности метода для отображения в объектном браузере или IntelliSense.
- THIS_ACCESS( cMemberName )
- Определяет, чтобы создать процедуру или функцию THIS_ACCESS , которая выполниться, когда запрашивается или изменяется значение члена объекта. Для подробной информации, см. Access and Assign Methods и How to: Создать Методы Access and Assign .
- [NODEFAULT]
- Препятствует Visual FoxPro выполнять заданное по умолчанию событие или код метода для событий Visual FoxPro и методов. Для подробной информации, см. NODEFAULT Команда .
- cStatements
- Определяет код для выполнения при вызове функции или процедуры для события или метода класса.
Совет: Вы можете определить, что функции и процедуры событий и методов могут принимать значения включением инструкции PARAMETERS или LPARAMETERS в качестве первой выполнимой строк функции или процедуры. Для подробной информации, см. PARAMETERS Команда и LPARAMETERS Команда .
- [ENDFUNC | ENDPROC]]
- Указывает конец определения функции или процедуры. В отличие от большинства ключевых слов Visual FoxPro, Вы не можете сокращать ENDFUNC и ENDPROC потому что они может конфликтовать с ключевыми словами ENDFOR и ENDPRINTJOB .
Замечания
Следующий код показывает резюме основных предложений команды DEFINE CLASS :
Скопировать код | |
---|---|
DEFINE CLASS Clause [Property_Definition_Clause] [PEMName_COMATTRIB Clause] [ADD OBJECT Clause] [IMPLEMENTS Clause] [Function_Procedure_Definition_Clause] ENDDEFINE |
Для подробной информации и полного синтаксиса, см. DEFINE CLASS Команда . Для подробной информации о специфическом предложении DEFINE CLASS команда, см. следующие темы:
Примеры
Пример 1
Следующий пример создает класс по имени MyForm от базового класса Form и содержит процедуру для события Click . Форма, созданная от класса содержит метод Click , который выводит диалоговое окно, когда Вы щелкаете на форме.
Скопировать код | |
---|---|
DEFINE CLASS MyForm AS Form PROCEDURE Click = MESSAGEBOX('MyForm has been clicked!') ENDPROC ENDDEFINE |
Пример 2
Следующий пример показывает, как Вы можете задать строгий контроль типов используя PROCEDURE cArrayName [] [AS Type ][@][AS Type ] предложение так, чтобы массивы могли быть правильно описаны как безопасные массивы к библиотеке типов:
Скопировать код | |
---|---|
DEFINE CLASS mySession AS Session OLEPUBLIC PROCEDURE GetWidgets1(aWidgets[]) ENDPROC PROCEDURE GetWidgets2(aWidgets[] AS Integer) ENDPROC PROCEDURE GetWidgets3(aWidgets[] AS Integer @) ENDPROC PROCEDURE GetRS(oRS[] AS ADODB.Recordset @) ENDPROC ENDDEFINE |
Как в других примерах, следующий код демонстрирует, как Вы можете определить строгую типизацию сложных выражений, определяя тип, основанный на COM классе:
Скопировать код | |
---|---|
DEFINE CLASS mySession AS Session OLEPUBLIC REFERENCE "ADODB.Recordset" PROCEDURE GetRS() AS ADODB.Recordset x=CREATEOBJECT("ADODB.Recordset") RETURN X ENDPROC PROCEDURE SetRS(oRS AS ADODB.Recordset @) oRS=CREATEOBJECT("ADODB.Recordset") ENDPROC ENDDEFINE |
См. Также
Другие Ресурсы
:: Scope Resolution OperatorADD CLASS Команда
CREATE CLASS Команда
CREATE CLASSLIB Команда
DODEFAULT( ) Функция
EVENTHANDLER( ) Функция
GETOBJECT( ) Функция
MODIFY CLASS Команда
RELEASE CLASSLIB Команда
Команды