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

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

Для одной таблицы можно открыть несколько окон автоформы одновременно и редактировать значения разных объектов. При этом модифицированные вели­чины корректно отображаются в таблице и фиксируются в объектном простран­стве. Данная возможность, как будет показано далее, особо полезна в случаях, ког­да между объектами таблицы установлены дополнительные связи.

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

  1. Таблицу Дисциплины настроим на работу в режиме автоформы. Для этого в свойстве EcoAutoFormзададим значениеTrue.

  1. Запустим приложение. Если щел­кнуть в начале произвольной строки таблицы, хранящей список дисциплин, откроет­ся автоформа для ее редактирования. В ней на закладке Methodsпоказаны воз­можные переходы между состояниями, причем в соответствии с последовательностью переходов: в следующее состояние нельзя перейти, не побывав в предыдущем. Если в автоформе нажать кнопкуChoose(Подпись кнопки совпадает с именем соответ­ствующего триггера), список доступных перехо­дов автоматически изменяется. Соответствующие изменения отобразятся и в колонке Состояние таблицы Дисциплины. Причем, переход в состояние Назначить дисциплину ограничен условием: количество рабочих часов преподавателя, которого собираются назначить на ведение выбранной дисциплины, в сумме с количеством часов назначаемой дисциплины должно быть меньше или равно максимальному количеству рабочих часов для преподавателя (см. Рисунок 9 .69).

Рисунок 9.69 – Работа с таблицей в режиме автоформы

      1. Расширение пользовательского интерфейса

Команды-триггеры для удобства можно привязать к пользовательским элементам управ­ления. Создадим в текущем проекте контекстное меню с помощью компонента ContextMenuиз категорииComponents. Пусть в нем будет три пункта: Выбрать, Назначить и Отклонить. Их необходимо связать с соответствующими триггерами.

  1. Добавим на форму компонент ContextMenu, дадим ему имяcmSubject.

  1. В свойстве меню RootHandleзадается корневой идентификаторehSubject.

  2. Объект управления (таблица Дисциплины), для которого вызывается данное меню, выбирается в свойстве BindingContext.

  3. В свойстве EcoListActionвыбирается тип действия ЕСО, выполняемого при выборе данного пункта. Введем значениеExecuteAction(исполняемое выражениеOCL).

  4. Само выражение OCLследует ввести в свойствоActionExpression. Это выражение формируется с помощью разделаTriggersв редакторе выраженийOCL. Так, для пункта Выбрать дисциплину это выражении записывается как строкаself.Choose.

  5. В свойстве EnabledOCLс помощью это­го же редактора формируется выражениеOCL– триггерный запрос, который опре­деляет, доступен ли пользователю соответ­ствующий элемент управления (в нашем слу­чае – пункт меню). Если триггер недоступен, то и пункт меню автоматически блокируется. Запрос выбирается в разделе редак­тораTriggerqueries. Например, для пункта меню Назначить он записывается строкойself.Appoint? (см. Рисунок 9 .70).

  6. Выделим таблицу dgSubject. В ее свойствеContextMenuвыберем ссылку на настроенный компонентcmSubject. Привязка и настройка контекстного меню для объектов таблицы Дисциплины закончена.

Рисунок 9.70 – Связывание команд-триггеров с компонентом ContextMenu

  1. Запустим приложение. Видно, что контекстное меню каждой строки (доступные в ней пункты) автоматически меняется в зависимости от состояния теку­щей дисциплины (см. Рисунок 9 .71).

Рисунок 9.71 – Применение контекстного меню в приложении