Сегодня посмотрим, как сделать грид со строкой Summary в конце. А сделать это очень просто, как и все в UniGUI. Выглядит это так
Сначала нам нужно посчитать итоговые результаты, делается это в событии OnColumnSummary
procedure TMainForm.UniDBGridColumnSummary(Column: TUniDBGridColumn;
GroupFieldValue: Variant);
begin
if SameText(Column.FieldName, 'quantity') then
begin
if Column.AuxValue = NULL then Column.AuxValue:=0;
Column.AuxValue := Column.AuxValue + Column.Field.AsInteger;
end
else if SameText(Column.FieldName, 'unitprice') then
begin
if Column.AuxValue = NULL then Column.AuxValue:=0.0;
Column.AuxValue := Column.AuxValue + (Column.Field.AsFloat * ClientDataSet1Quantity.AsInteger);
end;
end;
Column.AuxValue это некоторый буфер, как я понимаю, куда можно складывать суммирование по колонке.
Теперь нам нужно вывести результаты следующим образом
procedure TMainForm.UniDBGrid1ColumnSummaryResult(Column: TUniDBGridColumn;
GroupFieldValue: Variant; Attribs: TUniCellAttribs; var Result: string);
var
I : Integer;
F : Real;
begin
if SameText(Column.FieldName, 'quantity') then
begin
I:=Column.AuxValue;
Result:=Format('Total Units: %d', [I]);
Attribs.Font.Style:=[fsBold];
Attribs.Font.Color:=clGreen;
end
else if SameText(Column.FieldName, 'unitprice') then
begin
F:=Column.AuxValue;
Result:='Total Cost: '+FormatCurr('0,0.00 ', F) + FmtSettings.CurrencyString;
Attribs.Font.Style:=[fsBold];
Attribs.Font.Color:=clNavy;
end;
Column.AuxValue:=NULL;
end;
В принципе, довольно просто !