方法由俊哥提供
某些报表要求在Grid中进行分类小计,如下图:
合计时应将“小计”行忽略,否则数重复计算了。
第1步:定义一个合计过程
procedure cxGrid1DBBandedTableView1DataControllerSummaryFooterSummaryItemsSummary(
ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments;
var OutArguments: TcxSummaryEventOutArguments);
procedure TfrmMIOMonthlyPlus.cxGrid1DBBandedTableView1DataControllerSummaryFooterSummaryItemsSummary(
ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments;
var OutArguments: TcxSummaryEventOutArguments);
var
i : integer;
begin
i := vartoint(ASender.DataController.Values[Arguments.RecordIndex, colFlag.Index]); //colFlag列对应字段值 = 3时,即小计的记录
if i = 3 then
OutArguments.Value := 0;
end;
第2步:为合计事件邦定上面定义的过程
procedure TfrmMIOMonthlyPlus.aSummaryExecute(Sender: TObject);
begin
cxGrid1DBBandedTableView1.DataController.Summary.FooterSummaryItems.OnSummary :=
cxGrid1DBBandedTableView1DataControllerSummaryFooterSummaryItemsSummary;
inherited;
end;
注意:
理论第2步可能忽略的,我们只需双击cxGrid1DBBandedTableView1.DataController.Summary.FooterSummaryItems.OnSummary事件并写上第1步过程中的代码就可以了,但不知什么原因达不到我们想的效果(没有忽略小计行),所以第2步还是要写上。