1) Настроим удаление объекта Кафедра. Для доступа к пространству ECO подключим к форме файл packModelUnit (в разделе interface модуля формы). В обработчике события выбора пункта меню Действие > Кафедра > Удалить запишем следующий код:
procedure TLecturer.MenuItem9_Click(sender: System.Object; e: System.EventArgs);
var
CurChair: clChair;
DelChair: string;
result: System.Windows.Forms.DialogResult;
begin
if ehChair.GetList.Count <> 0 then
begin
if cmhChair.Element.AsObject is clChair
then
begin
CurChair:= clChair(cmhChair.Element.AsObject);
DelChair:= 'Вы хотите удалить кафедру ' + CurChair.ChairName + '?';
result:= MessageBox.Show(DelChair, 'Удаление кафедры', MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(result = System.Windows.Forms.DialogResult.Yes)
then
CurChair.AsIObject.Delete;
EcoGlobalActions.ExecuteAction(EcoAction(1),RHRoot);
end;
end;
end;
Перед ликвидацией объекта надо определить, какой объект пространства ECO подлежит уничтожению. Воспользуемся компонентом cmhChair. Переменная CurChair будет хранить локальный экземпляр класса Кафедра (выделенного в таблице Кафедры). Перед удалением объекта необходимо проверить, является ли выбранный в таблице элемент представителем класса clChair. Для этого обратимся к свойству Element компонента cmhChair, которое определяет выбранный компонент. Стандартный метод AsObject позволит интерпретировать значение свойства Element как стандартный объект.NET. Сравним его тип с нужным нам типом (классом clChair).
Дескриптор ehChair организует доступ к объектам класса Кафедра. Воспользуемся его методами GetList и Count, чтобы проверить наличие хотя бы одного объекта класса Кафедра.
Воспользуемся готовым компонентом MessageBox для подтверждения удаления. В строковую переменную DelChair запишем вопросительное предложение, которое передадим в качестве параметра в метод Show компонента MessageBox. Параметр метода Show – MessageBoxButtons.YesNo позволит создать окно сообщения с двумя кнопками. Возвращаемое значение от этого компонента (Yes или No) присвоим переменной result (типа System.Windows.Forms.DialogResult). Параметр метода Show – MessageBoxIcon.Question создаст в окне сообщения иконку-вопрос.
Нам нужен интерфейс IObject созданного локального экземпляра (хранимого в переменной CurChair), присутствующий у всех объектов ECO и предназначенный для прямой манипуляции объектным пространством EcoSpace. Он позволяет, в частности, удалить нужный экземпляр класса из пространства EcoSpace. Удаление выполняется вызовом метода Delete интерфейса IObject. Затем обновляем базу данных.
2) Запустим приложение и проверим функцию удаления (см. Рисунок 10.5).
Рисунок 10.5 – Программное удаление объекта
Удаление объектов Преподаватель и Дисциплина аналогично.