Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по циклу лабораторных работ Технологии разработки программного обеспечения .doc
Скачиваний:
204
Добавлен:
06.03.2016
Размер:
3.8 Mб
Скачать
      1. Связывание интерфейса с моделью

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рисунок 8.58 – Настроенный пользовательский интерфейс приложения