Juri Shutenko Personal Homepage. Visual FoxPro.

DataEnvironment. Часть 1. Введение. (Редакция Июнь 2005)

На форуме Visual FoxPro Club'a иногда проскальзывается совет - "не связывайся ты с этим" и даже приводятся суждения типа "полный отстой". В течение двух последних дней (28.06.2005-29.06.2005) на форуме FoxCluba опять возникло обсуждение этого вопроса, что заставило меня еще раз переписать эти статьи. Я полностью согласен с мнением Boudewijn Lutgerink написавшем в начале прошлого года статью, посвященную данному объекту Visual FoxPro, (которую я рекомендую прочитать), в которой он считает, что это происходит вледствие непонимания концепций, лежащих в основе DE, сессий и блокировок. Я не согласен в принципе с заключением, что этот объект хорош только для RAD (быстрой разработки приложений). Данная серия статей посвящена более глубокому изучению этого объекта и его примению в приложениях.

Что мы имеем в наличии на данный момент времени? Две вещи - объект, встроенный в форму (все версии) и класс (начиная с 8-й версии).

Для начала разберемся с объектом, встроенным в форму. Справка из Help:

DataEnvironment cоздается, когда вы создаете форму, набор форм или отчет. Объект DataEnvironment функционирует как контейнер для объектов Cursor (все версии), CursorAdapter (начиная с 8-й версии) и Relation (все версии) ассоциированный с формой, набором форм или отчетом.

Замечание.

В run-time вы можете устанавливать только следующий ряд свойств: DataSource (начиная с 8-й версии), DataSourceType (начиная с 8-й версии), InitialSelectedAlias (все версии), Name (все версии), OpenViews (все версии), и Tag (все версии). Для того, чтобы новые установки возымели действие, вы должны вызвать методы CloseTables и OpenTables объекта DataEnvironment. Установка любых других свойств объекта DataEnvironment приведет к генерации ошибки.

Все сказанное по справке далее относится к 8-й версии.

Примечания.

Вы можете определить и субклассировать класс DataEnvironment. Из формы вы можете сохранить существующий data environment, как файл библиотеки визуальных классов (.vcx) путем выбора формы с последующим выбором Save As Class из меню File и указанием DataEnvironment. Все свойства, методы и события доступны в окне Properties (далее по тексту - окно PEM) после того, как вы откроете Дизайнер классов. Однако, вы можете получить доступ к дизайнеру Data Environment только из дизайнера форм, но не из дизайнера классов..

В design-time, вы можте добавить уже существующий класс DataEnvironment в форму посредством выбора из панели рабочих инструментов (class library toolbar) или в коде, используя метод AddObject. Однако, Visual FoxPro считает введенный таким образом класс DataEnvironment как member class, но не как родной data environment.

Вы можете использовать свойства форм DEClass и DEClassLibrary для указания и загрузки внешнего класса DataEnvironment как в design, так и в run-time. Visual FoxPro поддерживает свойства DEClass и DEClassLibrary для файлов форм (.scx), библиотек визуальных классов (.vcx) и программ (.prg), но не для наборов форм, а также не поддерживает в дизайнере отчетов (Report Designer).

Необходимый комментарий к выделенной фразе из перевода подсказки.
 
Здесь имеется в виду, что в сохраненном таким образом классе DE при его редактировании в дизайнере классов вы не будете иметь той гибкости, которую вы можете получить, используя построитель DE, который доступен в дизайнере форм для открытой формы. Поэтому MS предлагает проделать все необходимые операции по вводу новых обычных курсоров и установки всех отошений в форме, из которой DE был сохранен как класс. Это, частично, не совсем верно и далее я покажу, как все это сделать, используя дизайнер классов. При использовании дизайнера классов можно запустить построитель (builder) и добавить cursor-adapter'ы. Но этом подробнее чуть позже.

К свойствам DEClass и DEClassLibrary мы также вернемся чуть позже, когда будем рассматривать DE как класс (еще раз напоминаю, что это справедливо только для версий 8 и выше).

Селектор для быстрого перехода на сайты, связанные с Visual FoxPro.