BOLD - инструмент реализации MDA в Delphi


         

Работа с приложением


Казалось бы, ничего особенного мы не получили. Создали, пусть и необычным способом, вполне обычную форму для ввода и редактирования данных по авторам. (Кстати, почему-то при этом мы не сделали форму ввода для названий книг, на что, видимо, уже обратил внимание проницательный читатель.) Но первое впечатление в данном случае обманчиво. Чтобы начать знакомство с «магией» Bold, добавим к нашему приложению один программный модуль: допишем в объявление Uses нашего модуля Unit1 модуль с названием BoldAFPDefault и запустим приложение на исполнение.

Введем в список авторов несколько значений (см. рис. 13). Теперь выберем автора Драйзер в таблице и кликнем дважды мышью по соответствующему значению, после чего откроется новое окно. Мы не создавали эту форму ? за нас все сделал Bold. Форма имеет несколько закладок, одна из которых называется writes. Перейдя на эту закладку, мы обнаружим форму для ввода названий книг. Если, не закрывая новой формы, перейти на другого автора и опять кликнуть дважды на имени автора, то появится еще одна новая форма для ввода книг, написанных эти автором, а затем повторить все действия с третьим автором. Таким образом вы можете ввести названия книг, написанных всеми тремя авторами (рис. 15).

Следует отметить, что автоматически созданные формы (автоформы) ведут себя абсолютно независимо от положения курсора на главной форме, так что мы можем редактировать книги каждого автора совершенно автономно. Также вы можете убедиться, что можно приписывать авторство книги другому писателю, если перетаскивать мышью не название книги (второй столбец), а серую ячейку первого столбца на форму другого автора.

Проницательный читатель без труда обнаружит, что название writes закладки на автоформе есть не что иное, как название соответствующей роли ассоциации в нашей модели. А где же в таком случае название второй роли? Для того чтобы увидеть его, выберем какую-нибудь книгу на автоформе и дважды кликнем на ее названии (рис. 16). При этом появится новая форма, на которой мы увидим название книги, а под ней ? серое поле с именем автора, слева от которого расположен заголовок byAuthor ? это и есть вторая роль нашей ассоциации.

Учитывая, что мы практически не писали кода, не программировали события drag&drop мыши и не создавали формы для ввода названий книг, можно констатировать, что полученное приложение обладает очень неплохой функциональностью.

Однако будем двигаться дальше. Чтобы видеть более полную картинку происходящего, добавим на главную форму визуальные компоненты BoldGrid2 и BoldNavigator2 с закладки BoldControls для отображения списка книг и управления им. Для получения списка книг из бизнес-уровня нам понадобится также второй компонент BoldListHandle2 со страницы BoldHandles палитры компонентов. В инспекторе объектов установим значение свойства RootHandle этого компонента равным BoldSystemHandle1 (его можно ввести вручную или выбрать из выпадающего списка); значение свойства Expression установим равным OCL-выражению Book.allinstances. Свойству BoldHandle визуальных компонентов BoldGrid2 и BoldNavigator2 присвоим значение BoldListHandle2, после этого кликнем правой кнопкой мыши на компоненте BoldGrid2 и выберем пункт Create Default Columns, то есть создадим столбцы по умолчанию. В результате у компонента BoldGrid2 появится заголовок столбца btitle (рис. 17).

Конечно, вы уже поняли, что названия столбцов aname и btitle в таблицах BoldGrid1 и BoldGrid2 Bold автоматически выбирает из назначенных нами атрибутов в классах Author и Book, когда мы создаем столбцы по умолчанию. Но это, естественно, не означает, что мы не можем настроить таблицы BoldGrid по-другому (например, присвоить им русскоязычные названия) ? просто сейчас мы выбираем наиболее простой и быстрый путь.

Запустим наше усовершенствованное приложение на выполнение. Добавим двух авторов ? Ильф и Петров ? с помощью навигатора. Добавим с помощью второго навигатора книгу «12 стульев». Кликнем дважды на названии этой книги (рис. 18). Перетащим с помощью мыши автора Ильф на автоформу на серое поле с именем автора. Мы увидим, что книге «12 стульев» был присвоен автор Ильф. Перетащим автора Петров на то же место и увидим, что автором книги стал Петров, а Ильф исчез. Мы с вами знаем, что данную книгу на самом деле написали оба автора, но при создании модели мы ввели бизнес-правило: «у каждой книги должен быть только один автор». Поэтому наше приложение, функционируя в рамках заданной модели, не позволяет добавить второго автора.



Содержание раздела