logo search
Учебное пособие по циклу лабораторных работ Технологии разработки программного обеспечения

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

Команды-триггеры для удобства можно привязать к пользовательским элементам управ­ления. Создадим в текущем проекте контекстное меню с помощью компонента 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 – Применение контекстного меню в приложении