Выношу на суд вариант решения. Просьба проверить на корректность. А если совсем плохо сделано и данный вариант не имеет смысла, то подсказать направление. Сразу оговорюсь, что требование - использовать стандартный DBGrid. Создаем тип:
| Код | PData = ^TData; TData = record Sum: Real; end;
|
И переменную
Суммирование ведем в обработчике
| Код | procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var aData: PData;
procedure CalcSumData; var k: integer; all_ves: real; begin all_summ:=0; if SumData.Count>0 then for k:=0 to SumData.Count-1 do begin aData:=SumData.Items[k]; all_summ:=all_summ + aData.Sum; end; Label1.Caption:=FormatFloat('# ##0.00', all_summ); end;
begin if Column.FieldName='SUMMA' then begin if SumData.Count<MyDataSet.RecordCount then begin New(aData); aData.Sum:=MyDataSet.FieldByName('SUMMA').AsFloat; SumData.Add(aData) end else if SumData.Count>0 then begin aData:=SumData.Items[MyDataSet.RecNo-1]; if aData.RecNo=MyDataSet.RecNo-1 then begin aData.Sum:=MyDataSet.FieldByName('SUMMA').AsFloat; SumData.Items[MyDataSet..RecNo-1]:=aData; end; end; CalcSumData; end; end;
|
Просьба сильно не пинать, конструктивные мысли приветствуются. Заранее спасибо
|