Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Команда DEFINE CLASS

См. также Пример

Создает пользовательский класс или подкласс и задает свойства, события и метод для этого класса или подкласса.

Синтаксис

DEFINE CLASS ClassName1 AS ParentClass
[[PROTECTED PropertyName1, PropertyName2 ...]
PropertyName = eExpression ...]
[ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]
[WITH cPropertylist]]...
[[PROTECTED] FUNCTION | PROCEDURE Name
[NODEFAULT]
cStatements
[ENDFUNC | ENDPROC]]...
ENDDEFINE

Параметры

ClassName1

Задает имя класса, который предстоит создать.

AS ParentClass

Задает родительский класс, по которому строится данный класс или подкласс. В качестве родительского класса можно указать базовый класс Visual FoxPro, такой как Form, или другой определенный пользователем класс или подкласс.

В следующей таблице перечислены базовые классы Visual FoxPro.

Имена базовых классов

CheckBox
Label
Column
Line
ComboBox
ListBox
CommandButton
OLEControl
CommandGroup
OLEBoundControl
Container
OptionButton
Control
OptionGroup
Cursor
Page
Custom
PageFrame
DataEnvironment
Relation
EditBox
Separator
Form
Shape
FormSet
Spinner
Grid
TextBox
Header
Timer
Image
ToolBar

Для создания невизуального пользовательского класса нужно задать Custom в качестве ParentClass.

В следующем примере создается подкласс 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 fox90001.gif символьной строкой 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 fox90001.gif это команды 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

Комментарии

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

Чтобы создать объект на основе определения класса или подкласса, выдайте фу кцию 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. Команды, функции, операторы, объекты, свойства, события и методы.