Связывание интерфейса с моделью
1) Сформируем три дескриптора ЕСО: ehLecturer, ehSubject (экземпляры класса ExpressionHandle) для организации доступа к объектам модели и пространства ЕСО во время работы программы и cmhLecturer (экземпляр класса CurrensyManagerHandle), который будет служить для указания на текущий объект таблицы Преподаватели.
2) Настроим таблицу Дисциплины так, чтобы она отражала список дисциплин, принадлежащих выбранному преподавателю в первой таблице. Свяжем дескриптор cmhLecturer с таблицей dgLecturer через свойство BindingContext. Теперь он отслеживает выделенную строку этой таблицы.
3) Настроим дескриптор cmhLecturer на связь с родительским объектом. Зададим ссылку на объект ehLecturer в свойстве RootHandle, определяющем корневой идентификатор ЕСО.
4) В свойстве RootHandle дескриптора ehSubject выберем значение cmhLecturer. Так задают место данного идентификатора в цепочке доступа к объектному пространству ЕСО.
5) В качестве выражения OCL введем в свойство Expression объекта ehSubject строку self.roleSubjects. Здесь roleSubjects – это имя роли класса Subject в его ассоциативной связи с классом Преподаватель. Это выражение определяет список дисциплин, предложенных и назначенных преподавателю, который выбран в таблице Преподаватели.
6) Свяжем таблицу Преподаватели с дескриптором ehLecturer через ее свойство DataSource, а таблицу Дисциплины – с дескриптором ehSubject. Теперь таблицы отображают поля классов Преподаватель и Дисциплина. Кроме этого, в таблице Дисциплины появилось поле SubjectState, которое будет автоматически отображать текущее состояние дисциплин.
7) Настроим стили таблиц. Воспользуемся свойством таблицы TableStyles. Присвоим полям таблиц русскоязычные названия.
8) Настроим функционирование кнопок. Выделим в окне Проектировщика кнопку Button1. В свойстве EcoListAction выберем значение Add. В свойстве RootHandle выберем подходящий поставщик объектов ЕСО – идентификатор ehSubject. Свяжем результат действия кнопки (созданный экземпляр класса Дисциплина) с визуальным элементом, отображающим этот экземпляр, в нашем случае — с таблицей dgSubject. Для этого в свойстве BindingContext выберем имя dgSubject. Аналогично настроим кнопку Button2 на операцию удаления. Выберем компонент EcoListActions, в его свойстве CaptionAdd введем слово Добавить, а в свойстве CaptionDelete – Удалить. Кнопки автоматически получила название Добавить и Удалить. В свойстве Text кнопки Button3 введем значение Сохранить (см. Рисунок 9.6).
9) Запустим приложение. Добавим несколько объектов в таблицу Дисциплины для выбранного преподавателя. В поле Состояние таблицы Дисциплины все объекты имеют одинаковое значение ChosenLecturer. На данный момент это состояние неизменяемо. Чтобы иметь возможность изменять состояния, произведем следующую модификацию пользовательского интерфейса.
Дата добавления: 2021-12-14; просмотров: 241;