Команда DEFINE CLASS
См. также Пример
Синтаксис
DEFINE CLASS ClassName1 AS ParentClass
Параметры
ClassName1
Задает имя класса, который предстоит создать.
AS ParentClass
Задает родительский класс, по которому строится данный класс или подкласс. В
качестве родительского класса можно указать базовый класс Visual FoxPro, такой
как Form, или другой определенный пользователем класс или подкласс.
В следующей таблице перечислены базовые классы Visual FoxPro.
[[PROTECTED PropertyName1, PropertyName2 ...]
PropertyName = eExpression ...]
[ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]
[WITH cPropertylist]]...
[[PROTECTED] FUNCTION | PROCEDURE Name
[NODEFAULT]
cStatements
[ENDFUNC | ENDPROC]]...
ENDDEFINE
Имена базовых классов
|
|
В следующем примере создается подкласс
MyForm на основе базового класса Form. В нем создается метод Click, отображающий диа оговое окно при щелканьи MyForm.DEFINE CLASS MyForm AS Form
PROCEDURE Click
= MESSAGEBOX('MyForm has been clicked!')
ENDPROC
ENDDEFINE
[PROTECTED PropertyName1, PropertyName2 ...]
PropertyName = eExpression ...
PropertyName = eExpression создает свойство класса или подкласса и присваивает ему значение, испо ьзуемое по умолчанию. Свойства представляют собой именованные атрибуты класса, опис вающие его характеристики и поведение. Классы и подклассы могут иметь множество свойств.
Оператор = присваивает свойству значение. В следующем примере создается по ьзовательский класс
MyClass и для него два свойства, Name (имя) и Version (версия). Свойство Name инциа изируется пустой строкой, а свойство Version символьной строкой 1.0.DEFINE CLASS MyClass AS Custom
Name = ''
Version = '1.0'
ENDDEFINE
К свойству можно обратиться извне определения класса или подкласса, после того как объект создан функцией CREATEOBJECT( ):
MyOjbect = CREATEOBJECT('MyClass')
При доступе к свойствам применяется следующий синтаксис:
ObjectName.Property
Чтобы запретить доступ и внесение изменений в свойства извне определения к асса или подкласса, включите опцию PROTECTED со списком имен свойств. Методы и соб тия внутри определения класса или подкласса могут обращаться и к защищенным свойствам.
В следующем примере свойство Version определяется как защищенное, что зап ещает доступ к нему и внесение изменений извне определения класса. В то же время свойство Name не защищено и открыто для доступа и изменения.
DEFINE CLASS MyClass AS Custom
PROTECTED Version
Name = ''
Version = '1.0'
ENDDEFINE
ADD OBJECT
Добавляет объект в определение класса или подкласса, взятый из базового класса Visual FoxPro, класса или подкласса, определенного пользователем, или из специальных элементов управления OLE.
PROTECTED
Запрещает обращение к свойствам объекта и его изменение извне определения к асса или подкласса. Ключевое слово PROTECTED должно стоять непосредственно перед ObjectName, в противном случае FoxPro сгенерирует синтаксическую ошибку.
ObjectName
Задает имя объекта и используется для ссылки на объект извне определения к асса или подкласса после того, как объект создан согласно определению класса или подкласса.
AS ClassName
Задает имя класса или подкласса, который содержит объект, добавляемый в опреде ение класса. Например, в следующем определении класса добавляется командная к опка из базового класса CommandButton и поле ввода со списком из базового к асса ListBox.
DEFINE CLASS MyClass AS Custom
ADD OBJECT CB1 AS CommandButton
ADD OBJECT LIST1 AS ListBox
ENDDEFINE
NOINIT
Указывает, что метод объекта Init не выполняется при добавлении объекта.
WITH cPropertyList
Задает список свойств и их значений для объекта, добавляемого в определение к асса или подкласса. Например, в следующем определении класса создается класс
MyClass, в него добавляется объект CommandButton и для этого объекта определяются свойства Caption и BackColor.DEFINE CLASS MyClass AS CUSTOM
ADD OBJECT CB1 AS CommandButton;
WITH Caption = 'Cancel', BackColor = 2
ENDDEFINE
[PROTECTED] FUNCTION | PROCEDURE Name
[NODEFAULT]
cStatements
[ENDFUNC | ENDPROC ...]
Предложения FUNCTION Name и PROCEDURE Name создают события и методы для класса или подкласса. Они создаются в виде набо а функций или процедур.
Вы можете создать в определении класса или подкласса функцию или процедуру соб тия, реагирующую на некоторое событие. Событие представляет собой определенное действие (например щелканье мышью), которое распознается объектом, созданным в этом классе или подклассе. Подробнее об обработке событий Visual FoxPro см. тему Основные события и главу 4 "Основы событийно-ориентированной модели" Руководства разработчика.
Для назначения событиям имен используется следующий синтаксис:
ObjectName.Event
В определении класса или подкласса можно также создать функцию или процедуру метода. Метод представляет собой процедуру, которая воздействует на объект, соз анный в том же определении класа или подкласса. Для назначения методам имен используется следующий синтаксис:
ObjectName.Method
Ключевое слово NODEFAULT запрещает Visual FoxPro выполнять предусмотренную по умолчанию обработку событий и методов Visual FoxPro. Например, если происходит событие KeyPress, то использование NODEFAULT в процедуре или функции KeyPress п иводит к тому, что Visual FoxPro не будет вводить нажатую клавишу в буфер к авиатуры Visual FoxPro. Тем самым вы можете создать процедуру KeyPress, которая позволит проверять, какая клавиша была нажата, прежде чем передавать ее в буфер клавиатуры.
NODEFAULT можно вставлять в любом месте внутри процедуры события или метода. Заметьте, что NODEFAULT тоже можно вставить в процедуру события или метода в ко структоре форм.
cStatements это команды Visual FoxPro, которые выполняются при инициировании события или метода.
Функции и процедуры событий и методов могут принимать значения через оператор PARAMETERS или LPARAMETERS , включаемый в функцию или процедуру первой испол яемой строкой.
В отличие от большинства ключевых слов Visual FoxPro, ENDFUNC и ENDPROC нельзя сокращать, во избежание путаницы с ключевыми словами ENDFOR и ENDPRINTJOB.
В следующем примере показано, как создать процедуру события, выдающую сообще ие при нажатии командной кнопки. Эта процедура отменяет установленное для команд ой кнопки по умолчанию действие события Click.
DEFINE CLASS MyClass AS Custom
ADD OBJECT MyButton AS CommandButton
ADD OBJECT MyList AS ListBox
PROCEDURE MyButton.Click
= MESSAGEBOX('This is my click event procedure')
ENDPROC
ENDDEFINE
Комментарии
Определенные пользователем классы это наборы команд, помещенные в файл программы, аналогично процедуре. Как и в процедуре, команды, следующие за определением класса или подкласса, не выпол яются, они только определяют свойства, события и методы для данного класса или подкласса.
Чтобы создать объект на основе определения класса или подкласса, выдайте фу кцию CREATEOBJECT( ) с именем класса или подкласса.
Описания классов и подклассов, создаваемые с помощью команды DEFINE CLASS, не ьзя вставлять внутри команд структурного программирования, таких как IF ... ENDIF или DO CASE ... ENDCASE. Их нельзя помещать и в циклы, такие как DO WHILE ... ENDDO или FOR ... ENDFOR.
Новое на сайте
-
Обновлен портфель программиста
Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский) -
Новые примеры программ
Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2) -
Обновленна справка
Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.