Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.doc
Скачиваний:
434
Добавлен:
04.06.2015
Размер:
2.33 Mб
Скачать
        1. Создание интерфейса

Перейдем к окну Проектировщика для главной формы проекта WinForm(вкладкаDesign). Переименуем стандартное название главной формы. Назовем ееwfMainForm, а сам классTWinFormпереименуем вTMainFormв свойствеNameкатегорииDesign. СвойствоText(категорияAppearance) отвечает за название заголовка окна, введем в него строку, например «Главная форма».

Для представления таблицы с объектами ЕСО на форме воспользуемся готовым компонентом DataGridиз категории палитры инструментовDataControls. Поместим этот компонент на форму и дадим ему названиеdgChair(в свойствеName). Эта таблица будет отвечать за представление экземпляров класса Кафедра (clChair). Исходно таблица должна быть пуста. В свойствеCaptionText(заголовок таблицы) введем название Кафедры.

Рис. 5.60. Настройка связи между классами

Добавим еще одну таблицу dgLecturer, которая в готовом приложении будет отвечать за отображение экземпляров класса Преподаватель (clLecturer). В свойствеCaptionTextвведем название Преподаватели.

Для работы с таблицами в простом приложение потребуется пять операций: добавление и удаление данных в двух таблицах и сохранение копии ECOпространства из оперативной памяти в базу данных. Редактирование данных будет осуществляться непосредственно в полях таблиц. Добавим на форму пять кнопок – экземпляров классаButton(Рис. 5 .61).

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

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

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

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

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

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

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

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

Настроим таблицу Преподаватель так, чтобы она отражала список преподавателей, принадлежащих выбранной кафедре в первой таблице. Для начала добавим в проект дескриптор CurrencyManagerHandle(из категорииEnterpriseCoreObjects) и дадим ему имя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 .6).

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

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]