Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Описание элементов массива pemName_comattrib

Элемент _COMATTRIB

Обозначение

Описание

Тип

1

nFlags

Флаги атрибута

Number

2

cHelpString

Строка помощи

String

3

cProperty Capitalization

Правило употребления прописных букв

String

4

cPropertyType

Тип свойства

String

5

nOptionalParms

Число параметров; если задается значение меньшее фактического числа параметров, то параметры с номерами большими заданного значения являются необязательными

Number

Если элементу массива задается неверное значение, то VFP генерирует ошибку. В случае пустого элемента используется значение по умолчанию.

Свойства, задаваемые _COMATTRIB, автоматически помечаются как скрытые и недоступны в VFP. Они обрабатываются VFP в процессе выполнения команды BUILD при записи в COM-библиотеку типа.

Значения элементов _COMATTRIB-массива:

nFlags – флаги атрибута. Описаны в табл. 13.4.

Таблица 13.4

Флаги атрибута

Значение

#DEFINE

Описание

0x1 (1)

COMATTRIB_RESTRICTED

Свойство (метод) не будет доступно в программах, написанных на языке высокого уровня. Флаг назначается для функций системного уровня или функций, не отображаемых браузером типа

0x40 (64)

COMATTRIB_HIDDEN

Свойство (метод) не доступно для пользователя

0x400 (1024)

COMATTRIB_NONBROWSABLE

Свойство (метод) появляется в браузере объекта, но не появляется в браузере свойств

0x100000 (1048576)

COMATTRIB_READONLY

Свойство доступно только для чтения. Флаг эквивалентен PropertyGet

0x200000 (2097152)

COMATTRIB_WRITEONLY

Свойство доступно только для записи. Флаг эквивалентен PropertyPut

Величина nFlags задается как сумма приведенных в столбце 1 или 2 значений. Указанные в столбце 2 константны определены в файле FoxPro.h.

Одновременное задание двух последних значений равносильно их отсутствию в nFlags.

Компоненты (свойства, методы) с флагом COMATTRIB_RESRICTED интерпретируются как _HIDDEN, например таким средством, как Visual Basic, с тем отличием, что с ними нельзя связать код.

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

Раннее и позднее связывания предполагают различные ограничения доступа. В случае раннего связывания клиенты не смогут изменять свойства с флагом "только для чтения" и читать свойство с флагом "только для записи" (поскольку отсутствует вход в таблицу виртуальных функций). При позднем связывании клиенты имеют возможность употреблять PropertyPut или PropertyGet для свойств соответственно с PEMName-флагом "только для чтения" и "только для записи".

cHelpString – строка, с текстом подсказки, указываемая для свойств. Для методов следует использовать опцию HELPSTRING cHelpString.

cPropertyCapitalization – по умолчанию VFP запишет имя свойства в библиотеку типа прописными буквами. Значение задается в виде соответствующей записи имени свойства (метода), например:

MyProperty_COMATTRIB[3] = "MyProperty" && Прописные и строчные буквы

или

MyProperty_COMATTRIB[3] = "myproperty" && Только строчные буквы

cPropertyType – задается только для свойств. Принимает те же значения, что и параметр Type опции AS.

nOptionalParms – число обязательных параметров. Так, если значение равно 2, а всего параметров 5, то 3 последних являются необязательными. Для поздно связываемых клиентов по умолчанию значение необязательных параметров равно .F., а функция PCOUNT( ), если употреблена, вернет число переданных параметров. Для рано связываемых клиентов по умолчанию значение необязательных параметров равно "", а PCOUNT( ) всегда вернет общее число параметром метода. Применяется только для методов.

Пример 1. Употребляется _COMATTRIB-массив.

&& Включаем FoxPro.h для использования константы COMATTRIB_READONLY

#include FoxPro.h

define class MyClass as Custom OLEPUBLIC

&& Задаем свойство класса

MyProperty = 5.2

&& Устанавливаем значения COM-атрибутов для свойства MyProperty

dimension MyProperty_COMATTRIB[4]

MyProperty_COMATTRIB[1] = COMATTRIB_READONLY

MyProperty_COMATTRIB[2] = "Текст справки, отображаемый браузером объекта"

&& Прописные и строчные буквы

MyProperty_COMATTRIB[3] = "MyProperty"

&& Тип данных

MyProperty_COMATTRIB[4] = "Float"

endDefine

Пример 2. _COMATTRIB употребляется как скалярная величина. Команда DIMENSION не используется.

#include FoxPro.h

define class MyClass as Custom OLEPUBLIC

&& Задаем свойство класса

MyProperty = 5.2

&& Устанавливаем только значение атрибута nFlags

MyProperty_COMATTRIB = COMATTRIB_READONLY

endDefine

Команда

ADD CLASS ClassName [OF ClassLibraryName1] TO ClassLibraryName2 [OVERWRITE]

добавляет определение класса в библиотеку классов.

Опции и параметры:

ClassName – имя класса, определение которого добавляется в библиотеку.

OF ClassLibraryName1 – имя библиотеки из которой берется определение класса. Может содержать полный путь и расширение. По умолчанию берется расширение VCX.

Если опция OF опущена, то ClassName ищется в библиотеках, открытых командой SET CLASSLIB. Если определение ClassName не найдено, то генерируется ошибка.

TO ClassLibraryName2 – имя библиотеки, в которую добавляется определение класса ClassName. Если библиотека не существует, то она будет создана.

OVERWRITE – существующее в библиотеке ClassLibraryName2 определение класса ClassName будет перезаписано. Если опция опущена, а библиотека классов уже содержит определение класса ClassName, то будет сгенерирована ошибка.

Команда

MODIFY CLASS ClassName [OF ClassLibraryName1] [AS cBaseClassName [FROM ClassLibraryName2]] [NOWAIT] [METHOD MethodName] [SAVE]

открывает проектировщик класса для интерактивного изменения определения существующего класса или создания определения нового класса.

Опции и параметры (см. также табл. 1.6):

ClassName – имя изменяемого или создаваемого класса.

OF ClassLibraryName1 – имя файла библиотеки, хранящей определение класса.

Если библиотека ClassLibraryName1 не существует, то она будет создана.

AS cBaseClassName – класс, на котором основано определение класса ClassName. Можно задать имя любого базового класса VFP, кроме Column и Header, а также имя пользовательского класса, если задана опция FROM ClassLibraryName2.

Если создается новый класс и опция AS опущена, то в качестве cBaseClassName берется VFP-базовый класс FormSet.

FROM ClassLibraryName2 – имя библиотеки классов, содержащей определение пользовательского класса, заданного параметром cBaseClassName. Может содержать полный путь и расширение. По умолчанию берется расширение VCX.

METHOD MethodName – имя события или метода, окно редактирования кода которого открывается при открытии проектировщика класса. При указании имени MethodName используется применяемый с объектами синтаксис, например при выполнении команды

modify class MyClass of MyClassLibrary method TxtFirstName.Click

открывается окно редактирования события Click элемента управления TxtFirstName класса MyClass библиотеки MyClassLibrary. Если в имени MethodName не будет префикса, то откроется окно редактирования события Click класса MyClass:

modify class MyClass of MyClassLibrary method Click

Замечания:

  1. Если имя библиотеки классов имеет пробелы, то оно заключается в кавычки, например:

modify class _folder of "c:\Program Files\Microsoft Visual FoxPro 9\Ffc\_controls"

  1. Опции OF и FROM можно опустить, а нужные библиотеки классов открыть командой SET CLASSLIB.

Команда

CREATE CLASS ClassName | ? [OF ClassLibraryName1 | ?] [AS cBaseClassName [FROM ClassLibraryName2]] [NOWAIT]

открывает проектировщик класса для интерактивного создания нового класса. Если вместо ClassName употребляется знак ?, то будет открыт диалог New Class.

Опции и параметры описаны при рассмотрении команды MODIFY CLASS.

Команда

CREATE CLASSLIB ClassLibraryName

создает новую пустую библиотеку классов ClassLibraryName. Имя библиотеки может содержать путь и расширение. По умолчанию берется расширение VCX.

Определение класса добавляется в библиотеку посредством команд ADD CLASS, CREATE CLASS и MODIFY CLASS.

Команда

RENAME CLASS ClassName1 OF ClassLibraryName TO ClassName2

изменяет в библиотеке классов ClassLibraryName имя класса ClassName1 на имя ClassName2.

Если имеются классы, ссылающиеся на имя ClassName1, то эти ссылки нужно не забыть переправить на имя ClassName2.

Команда

REMOVE CLASS ClassName OF ClassLibraryName

удаляет определение класса ClassName из библиотеки ClassLibraryName.

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

Команда

CLEAR CLASS ClassName

удаляет определение класса ClassName из памяти. Определение класса сохраняется в памяти после создания экземпляра объекта. После удаления из памяти экземпляра объекта определение класса все еще остается в памяти. Чтобы его удалить, используется команда CLEAR CLASS.

Команда

CLEAR CLASSLIB ClassLibraryName

удаляет из памяти все определения классов, содержащиеся в библиотеке ClassLibraryName. Если, однако, существует экземпляр какого-либо класса библиотеки, то определение этого класса из памяти удалено не будет. Команда автоматически выполняет команду CLEAR CLASS для каждого класса библиотеки ClassLibraryName. Ошибки, которые могут возникнуть при освобождении класса (например класс используется) игнорируются.

Команда

SET CLASSLIB TO ClassLibraryName [IN APPFileName | EXEFileName] [ADDITIVE] [ALIAS AliasName]

открывает VCX-библиотеку классов, содержащую определения классов.

Опции и параметры:

TO ClassLibraryName – задает имя открываемой VCX-библиотеки классов. Если ClassLibraryName не содержит полного пути, то VFP ищет файл в директории по умолчанию (задается командой SET DEFAULT), а затем в директориях, установленных командой SET PATH.

Выполнение SET CLASSLIB TO без параметра ClassLibraryName, закрывает все открытые библиотеки классов.

IN APPFileName | EXEFileName – задает APP- или EXE-файл, содержащий библиотеку классов.

ADDITIVE – открывает библиотеку классов, не закрывая ранее открытые VCX-файлы. При отсутствии опции все ранее открытые библиотеки будут закрыты.

ALIAS AliasName – задает псевдоним библиотеки классов. Порядок использование псевдонима иллюстрирует следующий пример:

vcxFile = 'c:\Program Files\Microsoft Visual FoxPro 9\Ffc\_utility.vcx'

&& Используем в SET-команде выражение с именем (VcxFile)

set classlib to (VcxFile) alias Util

&& Создаем объект на базе класса _arraylib

oArray = NewObject('util._arraylib')

Команда

RELEASE CLASSLIB ClassLibraryName1 | ALIAS AliasName1 [, ClassLibraryName2 | ALIAS AliasName2 …] [IN APPFileName | EXEFileName]

закрывает библиотеку классов.

Смысл опций и параметров см. в описании команды SET CLASSLIB.

Пример:

&& Создаем библиотеку классов

create classlib MyClassLib

&&

&& Открываем проектировщик класса. После создания определение класса

&& можно записать в библиотеку MyClassLib.vcx

create class MyForm of MyClassLib as "Form"

&&

&& Открываем библиотеку классов MyClassLib.vcx

set classlib to MyClassLib additive

…

&& Закрываем библиотеку классов MyClassLib.vcx

release classlib MyClassLib

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]