Определяет специфические характеристики и значения для Свойств и Методов типа PEMName_COMATTRIB. Описываемые в данном разделе Особенности и возможности относятся только к определениям  классов типа OLEPUBLIC, которые содержат дополнительную информацию: описание, атрибуты "только-чтение" и другие характеристики Свойств и Методов, которые вы планируете использовать в соответствующих библиотеках типов COM, серверах Автоматизации.

NoteОбратите Внимание

В отличие от методов типа Access и Assign, рассматриваемые характеристики PEMName_COMATTRIB свойств объекта автоматически устанавливают характеристику "hidden" создаваемым Свойствам и, тем самым, эти Свойства являются недоступными в программном коде Visual FoxPro. Данные характеристики предназначены строго для использования  в Visual FoxPro в процессе проектирования и создания библиотек типа COM.

[PEMName_COMATTRIB = nFlags | DIMENSION PEMName_COMATTRIB[numElements]
[PEMName_COMATTRIB[1] = nFlags
PEMName_COMATTRIB[2] = cHelpString
PEMName_COMATTRIB[3] = cPropertyCapitalization
PEMName_COMATTRIB[4] = cPropertyType
PEMName_COMATTRIB[5] = nOptionalParams]]

Параметры

[ PEMName_COMATTRIB = nFlags| DIMENSION PEMName_COMATTRIB[numElements]

Определяет значение параметра nFlags для Свойства или Метода типа  PEMName, или использования команды DIMENSION для создания внутреннего Свойства в виде Массива типа PEMName в библиотеке типов. Когда создается Массив, numElements определяет номер соответствующего элемента, не более 5.

В следующей таблице описываются характеристики указанных элементов этого массива.

Элемент COMATTRIB  Краткое Описание Тип

1

Флаги атрибутов.

Число

2

Строка Описания.

Строка

3

Применение Заглавных букв.

Строка

4

Тип Свойства.

Строка

5

Количество параметров.

NoteОбратите внимание

Если вы указываете меньшее количество параметров, чем задано при определении Метода, то остальные параметры объявляются как опциональные (необязательные).

Число

NoteПримечание

При задании неверного значения или типа элемента в массиве PEMName_COMATTRIB, система Visual FoxPro генерирует Ошибку. Пустое значение для конкретного элемента предполагает значение "по-умолчанию" данного элемента.

nFlags

Определяет флаги атрибутов для Свойства или Метода PEMName, которые описываются в Библиотеке Типов (Type Library). В следующей таблице описываются допустимые значения флагов и их описания.

Значение
nFlags
#DEFINE Краткое описание

0x1 (1)

COMATTRIB_RESTRICTED

Свойство или Метод не должны быть доступны из Макро-языков (скриптов JS,VS). Данный флаг предназначен для функций системного уровня или других функций,  которые не отображаются в системных Браузерах, осуществляющих навигацию в COM-классах.

Атрибут COMATTRIB_RESTRICTED означает, что на уровне Макро-программ рассматриваемые программные Элементы (Свойства и Методы) должны быть недоступны. Аналогичные Компоненты, созданные с атрибутом _HIDDEN являются доступными с помощью соответствующего Браузера Visual Basic. Основным различием является то, что указанные Элементы не могут быть связаны с внешними компонентами.

0x40 (64)

COMATTRIB_HIDDEN

Свойство или Метод не должны быть доступны пользователю, однако могут быть привязаны (могут обрабатываться) внешними компонентами.

Атрибут COMATTRIB_HIDDEN означает, что Свойство или Метод не отображаются в соответствующем Браузере. Данный атрибут обычно используется для исключения рассматриваемого Элемента из Объектной модели, но данный элемент может использоваться в Классе в соответствующих фрагментах программного Кода.

0x400 (1024)

COMATTRIB_NONBROWSABLE

Свойство или Метод является доступным в Браузере Объектов, но является недоступным в Браузере Свойств.

Атрибут COMATTRIB _NONBROWSABLE означает, что рассматриваемый Элемент не доступен в Браузере Свойств. Данный атрибут обычно используется в тех случаях, когда при возникновении ошибки необходимо видеть значение конкретного Свойства, которое отображается в Браузере Свойств. Процессы Раннего и Позднего Связывания налагают  особые требования по доступу к программным Элементам. Клиент раннего связывания не в состоянии записать значение в Свойство типа "только-для-чтения", или прочитать значение из свойства типа "только-для-записи", поскольку данные свойства будут отсутствовать в соответствующей таблице VTable. Клиент позднего связывания  может обратиться  к соответствующим элементам PropertyGet или PropertyPut, объявленным как PEMName.

0x100000

COMATTRIB_READONLY

Свойство только "для чтения". Применяется только для Свойств. Эквивалентно PropertyGet.

NoteОбратите Внимание

Указание атрибутов COMATTRIB_READONLY и COMATTRIB_WRITEONLY означает недоступность данного Свойства (не читать и не писать).

0x200000

COMATTRIB_WRITEONLY

Свойство только "для записи". Применяется только для Свойств. Эквивалентно PropertyLet.

NoteОбратите Внимание

Указание атрибутов COMATTRIB_READONLY и COMATTRIB_WRITEONLY означает недоступность данного Свойства (не читать и не писать).

PEMName_COMATTRIB[2] = cHelpString

Определяет строку текста, которая характеризует в библиотеке типов создаваемое Свойство PEMName. Для Методов используется соответствующая секция-опция HELPSTRING cHelpString.

PEMName_COMATTRIB[3] = cPropertyCapitalization

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

PEMName_COMATTRIB[4] = cPropertyType

Определяет название типа создаваемого Свойства (string, numeric...), для Методов используется секция-опция AS Type. Данный параметр применяется только для Свойств Класса COM.

PEMName_COMATTRIB[5] = nOptionalParms]]

Определяет количество опциональных (необязательных) параметров, передаваемых в Метод. Например, если данный элемент имеет значение = 2 для метода, у которого определено всего 5 параметров, то последние 3 параметра являются опциональными (необязательными). Применяется только для Методов.

Для Клиентов "позднего связывания", по-умолчанию, для необязательных параметров присваиваются значения, =  False (.F.), а функция PCOUNT( ) возвращает фактическое количество переданных параметров в вызываемый Метод. Для Клиентов "раннего связывания", по-умолчанию,  для опциональных параметров присваивается значение Empty -пустая строка (""), а функция PCOUNT( ) всегда возвращает общее количество описанных параметров в Методе (а не количество фактически переданных параметров).

Expand imageКомментарии

В следующем далее фрагменте программного Кода представлена общая Структура команды DEFINE CLASS:

  CopyCode imageКопировать Код
DEFINE CLASS Clause
[Property_Definition_Clause]
[PEMName_COMATTRIB Clause]
[ADD OBJECT Clause]
[IMPLEMENTS Clause]
[Function_Procedure_Definition_Clause]
ENDDEFINE

Дополнительную информацию о полном синтаксисе смотрите в разделе DEFINE CLASS, команда. Уточняющую информацию о деталях использования различных параметров команды DEFINE CLASS смотрите в следующих пунктах:

Expand imageПример

В представленном далее примере иллюстрируется определение массива в Библиотеке Типов с помощью рассматриваемой Секции DIMENSION PEMName_COMATTRIB:

  CopyCode imageКопировать Код
#INCLUDE foxpro.h
DEFINE CLASS myOLEClass AS Custom OLEPUBLIC
MyProperty = 5.2
* Set COM attributes for MyProperty.
DIMENSION MyProperty_COMATTRIB[4]
myProperty_COMATTRIB[1] = COMATTRIB_READONLY
myProperty_COMATTRIB[2] = "Help text displayed in object browser"
myProperty_COMATTRIB[3] = "MyProperty" && Proper capitalization.
myProperty_COMATTRIB[4] = "Float" && Data type
ENDDEFINE

Однако, если Вы хотите установить только элемент nFlags, Вы не должны создавать массив:

  CopyCode imageКопировать Код
#INCLUDE foxpro.h
DEFINE CLASS myOLEClass AS Custom OLEPUBLIC
MyProperty = "Test"
* Set the only the nFlags attribute for MyProperty.
myProperty_COMATTRIB = COMATTRIB_READONLY
ENDDEFINE

Expand imageСм. также