Главная » Delphi » Delphi 2006 – Программное создание объектов ЕСО

0

Реализуем вышеописанные возможности примера на уровне операторов языка Delphi. Заново создадим пустой проект ЕСО. Назовем его EC03Project. Подготовим три описанных выше класса: StarSystemElement, Star и Planet с соответствующими атрибутами. Сформируем между ними начальные взаимосвязи наследования. На форме разместим кнопку Добавить звезду, а также таблицу DataGricH. В ее свойстве CaptionText введем строку Звезды.

Для связи пользовательского интерфейса с объектным пространством добавим к проекту дескриптор (компонент ExpressionHandle). Назовем его ehStar, а в качестве родительского дескриптора (свойство RootHandle) зададим объект rhRoot. В качестве выражения OCL введем в свойство Expression строку Star .All Instances. Назначим также связь таблицы DataGridl с дескриптором ehStar — через ее свойство DataSource.

В предыдущем примере создание и удаление объектов ЕСО обеспечивалось визуальной настройкой свойств кнопки Добавить звезду в Инспекторе объектов. Теперь мы вручную запрограммируем эти действия.

Создадим обработчик нажатия кнопки. В нем надо записать команду создания нового экземпляра класса Star. Новый объект ЕСО создается вызовом стандартного конструктора Create, доступного для всех классов ЕСО. Параметром его должна стать ссылка на объектное пространство ЕСО текущего приложения. Эта ссылка называется EcoSpace и представляет собой свойство текущей формы. Оно автоматически ей добавлено в процессе начального создания проекта ЕСО.

procedure TWinForml. But tonl_Click (sender: System. Ob j ect; e :

System. EventArgs) ;

begin

Star.Create(EcoSpace); end;

Данный код функционально эквивалентен визуальной настройке кнопки. Тогда мы задали в ее свойстве RootHandle дескриптор, связывающий кнопку с конкретным набором экземпляров объектного пространства. Выполняемое ею действие (создание объекта ЕСО) вводилось в свойстве EcoListAction. В программном коде достаточно создать экземпляр класса Star. Доступ к объектам, размещенным в пространстве ЕСО, осуществляется с помощью выражений OCL.

Новый экземпляр класса Star автоматически разместится в объектном пространстве, связь с которым организована через идентификатор EcoSpace. Доступ к экземплярам конкретного класса Star происходит через дескриптор ehStar. Этот дескриптор поставляет объекты таблицы «Звезды».

Запустим программу. После каждого нажатия на кнопку Добавить звезду таблица автоматически пополняется новым объектом.

Дополним проект второй таблицей «Планеты», второй кнопкой Добавить планету и новым дескриптором ehPlanet. Свяжем дескриптор с классом Planet через свойство Expression — введем выражение ось Planet. Allinstances. Обработчик нажатия на вторую кнопку запишется так:

procedure TWinForml . But ton2_Click (sender: System. Ob j ect; e:

System. EventArgs) ; begin

Planet.Create(EcoSpace) ; end;

Теперь пользователю программы доступны две кнопки. Кнопка Добавить звезду добавляет объект в таблицу «Звезды», а кнопка Добавить планету добавляет объект в таблицу «Планеты».

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии