Программное редактирование объекта
1) Перейдем к настройке операции редактирования объекта. Так же, как и в случае добавления, для редактирования воспользуемся отдельным окном. Создадим новую форму ECO Enabled Windows Form. В этой форме будем редактировать выбранную в таблице кафедру. Назовем форму wfChairEdit (класс TChairEdit), в свойстве Text введем значение Редактирование кафедры.
2) Настроим вызов созданной формы по выбору пункта меню Действие > Кафедра > Редактировать. Перейдем к вкладке Code формы wfChairEdit. Объявим переменную, ответственную за создание данной формы:
var
callChairEdit: TChairEdit;
3) Перейдем к форме Преподаватели. Подключим форму wfChairEdit. Для редактирования объекта надо определить, какой объект подлежит редактированию. Для этого в форме Преподаватели создадим переменную типа clChair:
var
callLect: TLecturer;
CurChair: clChair;
В этой переменной будем хранить текущий объект.
4) Для взятия текущего объекта воспользуемся компонентом cmhChair. В обработчике события выбора пункта меню Действие > Кафедра > Редактировать пропишем следующие операции:
procedure TLecturer.MenuItem8_Click(sender: System.Object; e: System.EventArgs);
begin
if ehChair.GetList.Count <> 0
then
begin
if cmhChair.Element.AsObject is clChair
then
CurChair := clChair(cmhChair.Element.AsObject);
callChairEdit := TChairEdit.Create(EcoSpace);
callChairEdit.MdiParent := ParentWin;
callChairEdit.Show;
end;
end;
Окно редактирования будет создано в том случае, если есть хотя бы один объект класса Кафедра. Воспользуемся переменной CurChair в форме Редактирование кафедры, чтобы иметь доступ к значениям полей текущего объекта.
5) Вернемся к форме Редактирование кафедры. Разместим на ней три компонента Label, три компонента TextBox (категория Windows Forms) и две кнопки (см. Рисунок 10.6).
6) В свойстве FormBorderStyle установим значение FixedDialog, в свойстве ControlBox – False.
Рисунок 10.6 – Настройка компонентов формы Редактирование кафедры
7) Подключим файл packModelUnit, выберем в свойстве EcoSpaceType компонента RHRoot значение projDeanOfficeEcoSpace для доступа к пространству ECO. Подключим форму wfLecturer (Преподаватель), чтобы использовать созданную в ней переменную CurChair.
8) При вызове окна Редактирование кафедры поля компонентов TextBox должны содержать значения соответствующих полей объекта, выбранного для редактирования.
Выделим форму в окне проектировщика и перейдем на вкладку Events (События) в инспекторе объектов. Выберем событие Load и сформируем обработчик, в котором запишем следующий код:
procedure TChairEdit.TChairEdit_Load(sender: System.Object; e: System.EventArgs);
begin
TextBox1.Text := CurChair.ChairName;
TextBox2.Text := CurChair.ChairHeadSNP;
TextBox3.Text := CurChair.ChairSecrSNP;
end;
9) После того, как пользователь отредактировал данные, сохраним изменения. Сохранение происходит и в случае, когда данные не были изменены. В обработчике нажатия кнопки ОК запишем код:
procedure TChairEdit.Button1_Click(sender: System.Object; e: System.EventArgs);
CurChair.ChairName := TextBox1.Text;
CurChair.ChairHeadSNP := TextBox2.Text;
CurChair.ChairSecrSNP := TextBox3.Text;
Close;
end;
Эта процедура аналогична операции добавления, за исключением того, что мы не создаем новый объект, а оперируем с существующим объектом.
10) Запустим приложение, проверим функцию редактирования кафедры (см. Рисунок 10.7)
Рисунок 10.7 – Редактирование объекта в отдельном окне
По аналогии настроим редактирование преподавателя и дисциплины. Обратим внимание, что при оперировании с целочисленными значениями необходимо перевести их в значение типа string при выводе, используя функцию ToString:
TextBox3.Text := CurLect.MaxAmountHours.ToString;
Обратное преобразование производится применением функции Convert.ToInt32:
CurLect.MaxAmountHours := Convert.ToInt32(TextBox3.Text);
Дата добавления: 2021-12-14; просмотров: 258;