Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Связывание интерфейса с моделью




Связь пользовательского интерфейса с моделями ЕСО обычно происходит через компонент ExpressionHandle. Он доступен в категории палитры инструментов Enterprise Core Objects. Через подобные идентификаторы (дескрипторы) организуется доступ к объектам модели и пространства ЕСО во время работы программы.

Идентификаторы ЕСО связываются друг с другом в цепочки. Во главе такой цепочки расположен корневой идентификатор. Он задает общий контекст работы (доступ к объектному пространству) для всех остальных идентификаторов ЕСО в программе.

Рис. 5.5. Добавление компонентов пользовательского интерфейса

Корневой идентификатор добавляется к проекту автоматически (по умолчанию он называется rhRoot). Все остальные идентификаторы ЕСО добавляются и настраиваются вручную, что связывает пространство ЕСО с элементами пользовательского интерфейса с помощью типовых механизмов связывания .NET.

Добавим к проекту компонент ExpressionHandle. Он отображается в нижней части окна Проектировщика, под формой, где уже имеется набор компонентов ЕСО. Назовем его ehChair, введем это имя в свойство Name категории Design.

В свойстве RootHandle этого дескриптора выберем значение rhRoot – ссылку на родительский, автоматически созданный корневой идентификатор. Так задают место данного идентификатора в цепочке доступа к объектному пространству ЕСО.

В свойстве DataSource таблицы dgChair выберем имя ehChair в списке доступных идентификаторов ЕСО.

Настроим таблицу Преподаватель так, чтобы она отражала список преподавателей, принадлежащих выбранной кафедре в первой таблице. Для начала добавим в проект дескриптор CurrencyManagerHandle (из категории Enterprise Core Objects) и дадим ему имя cmhChair, так как этот компонент будет указывать на текущую строку таблицы Кафедра. Свяжем дескриптор cmhChair с таблицей dgChair через свойство BindingContext. Теперь он отслеживает выделенную строку этой таблицы.

Зададим ссылку на объект ehChair в свойстве RootHanler, определяющим корневой идентификатор ECO.

Добавим к проекту еще один компонент ExpressionHandle. Назовем его ehLecturer. Дескриптор ehLecturer будет обращаться к экземплярам класса Преподаватель.

Зададим ссылку на объект cmhChair в свойстве RootHanler.

Потребителем объектов, предоставляемых дескриптором ehLecturer, будет вторая таблица. В ее свойстве DataSource выберем ссылку на объект ehLecturer.

Приступим к настройке элементов пользовательского интерфейса. Организуем с помощью визуальных средств Delphi создание новых экземпляров класса Кафедра и добавление их в таблицу. Выделим в окне Проектировщика кнопку Button1. В свойстве EcoListAction (Список стандартных действий ЕСО) выберем значение Add (Добавить объект).

Кнопка Button1 автоматически получила название Add. Переименуем кнопку. Для этого воспользуемся компонентом EcoListActions (он добавляется в проект по умолчанию и находится в нижней части окна Проектировщика), в его свойстве CaptionAdd введем Добавить.

Объект ЕСО, который мы хотим добавить к проекту (сделать доступным через элементы управления на форме), задается в свойстве RootHandle. В нем надо выбрать подходящий поставщик объектов ЕСО, в нашем случае — идентификатор ehChair.

Свяжем результат действия кнопки (созданный экземпляр класса Кафедра) с визуальным элементом, отображающим этот экземпляр, в нашем случае — с таблицей dgChair. Для этого в свойстве BindingContext (контекст связывания) выберем имя dgChair (Рис. 5.1).

Теперь добавим операцию удаления экземпляров класса Кафедра. Реализуем это действие по аналогии с операцией добавления. Выделим в окне Проектировщика кнопку Button2. В свойстве EcoListAction выберем значение Delete. Зададим идентификатор ehChair в свойстве RootHandle. Свяжем результат действия кнопки с визуальным элементом — таблицей dgChair. Для этого в свойстве BindingContext у кнопки Delete выберем имя dgChair. Перейдем к компоненту EcoListActions и в его свойстве Caption Delete введем Удалить.

Настройка кнопки Button3 (будет отвечать за добавление экземпляра класса Преподаватель). Значения свойств кнопки: EcoListAction – Add; RootHandle – ehLecturer; BindingContext – dgLecturer. Перейдем к компоненту EcoListActions и в его свойстве Caption Add введем Добавить.

Рис. 5.1 Настройка кнопки добавления экземпляра класса Кафедра

Настройка кнопки Button4 (будет отвечать за удаление экземпляра класса Преподаватель). Значения свойств кнопки: EcoListAction –Delete; RootHandle – ehLecturer; BindingContext – dgLecturer. Перейдем к компоненту EcoListActions и в его свойстве Caption Delete введем Удалить.

Кнопка Button5 будет отвечать за обновление БД. Назовем ее Сохранить. В свойстве EcoAction (категория ECO|GUI) выберем UpdateDatabase. Таким образом, по нажатию этой кнопки выполняется синхронизация содержимого пространства ECO в оперативной памяти и его копии в базе данных. После каждого нажатия кнопки «Сохранить» содержимое таблицы сохраняется в БД. После нового запуска программы в таблицу пользовательского интерфейса автоматически загружается содержимое модели, сохраненное при последнем выполнении команды UpdateDatabase.

На данном этапе связывание интерфейса с моделью закончено (Рис. 5.2).

Действия, которые выполняет дескриптор в программе, определяются значением свойства Expression. В это свойство вводится выражение языка OCL, которое определяет схему создания объектов модели ЕСО.

Используем дескриптор ehChair для обращения к экземплярам класса Кафедра. Введем в свойство Expression объекта ehChair строку clChair.allinstances. Иначе это можно сделать с помощью редактора OCL выражений. Введенное выражение задает доступ ко всем текущим экземплярам класса Кафедра в объектном пространстве. В таблице, показанной на форме в окне Проектировщика, сразу же отобразятся поля класса Кафедра (ChairHeadSNP, ChairSecrSNP и ChairName). Дескриптор ehChair становится поставщиком данных нашей модели ЕСО для первой таблицы.


Поделиться:

Дата добавления: 2015-04-04; просмотров: 84; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты