Улучшим пример, подсчитав общее количество книг и их сумму. Для этого в модуле DM создайте переменную – закладку. Она нам необходима для того, чтобы после подсчета возвращаться к записи, откуда вызвана процедура пересчета. И переменная должна находится там же, где определены компоненты Table, потому что закладки описываются в этих модулях. Переменная должна быть глобальной:
bm : TBookmarkStr; //закладка
Далее, в главном модуле в разделе Private опишем нашу процедуру:
procedure Itog;
Напишем эту процедуру в самом низу:
procedure TfMain.Itog;
var
all : Integer; //для общ. кол-ва книг
summ : Real; //для общ. суммы
begin
//ставим закладку:
DM.bm := fDM.TBooks.Bookmark;
//обнуляем переменные
all := 0;
summ := 0;
//перемещаемся от начала до конца и сохраняем результат:
fDM.TBooks.First;
while not fDM.TBooks.Eof do begin
all := all + fDM.TBooks['Exemp'];
summ := summ + fDM.TBooks['Exemp'] * fDM.TBooks['Cena'];
fDM.TBooks.Next;
end; //while
//снова переходим на закладку и убираем ее:
fDM.TBooks.Bookmark := DM.bm;
DM.bm := '';
//записываем данные:
Label1.Caption := 'Всего книг: ' + IntToStr(all);
Label2.Caption := 'На общую сумму: ' +
FormatFloat('0,000.00', summ) + ' руб.'; //14 лекция
end;
Сгенерируйте событие onShow для главной формы и там вызовите нашу процедуру:
Itog;
Также добавьте ее вызов из команды меню "Редактирование – Добавить книгу". Теперь мы можем быть уверены, что при добавлении книги пересчет будет правильный.