[cxGrid] use OnAfterSummary

来源:互联网 发布:有啥聊天软件 编辑:程序博客网 时间:2024/06/05 07:02

Problem: InvoiceHeader.Total = sum(InvoiceDetail.ItemTotal)
how to write a function to auto sum up ItemTotal

//1. add TcxGridDBTableSummaryItem
click cxGrid1DBTableView1.DataController.Summary.FooterSummaryItems FieldDesigner
and add a item

property:
  Column := cxGrid1DBTableView1ItemsTotal;
  FieldName := 'ItemTotal';
  Kind := skSum;

//2. add OnAfterSummary event handler
click cxGrid1DBTableView1.DataController.Summary EventDesigner

procedure TForm1.cxGrid1DBTableView1DataControllerSummaryAfterSummary(
  ASender: TcxDataSummary);
begin
  with ASender do
  begin
    if VarIsNull(FooterSummaryValues[0]) or VarIsEmpty(FooterSummaryValues[0]) then
      exit;
    if cdsInvoiceHeader.State in [dsInsert, dsEdit] then
      cdsInvoiceHeader.FindField('Total').AsFloat := FooterSummaryValues[0];
  end;
end;
 

原创粉丝点击