在动态添加Footer SummaryItem和Group的Item

http://www.delphibbs.com/delphibbs/dispq.asp?lid=2135268

////////////////////////////////////////////////
with tvOrders.DataController.Summary do
  begin
    BeginUpdate;
    try
      with FooterSummaryItems.Add as TcxGridDBTableSummaryItem do
      begin
        Column := tvOrdersPaymentAmount;
        Kind := skSum;
        Format := 'SUM = $,0.00;-$,0.00';
      end;
    finally
      EndUpdate;
    end;
    //Update all open details of the master view (tvCars)
    tvCars.DataController.ClearDetails;
  end;
//////////////////////////////
以上是TcxGridDBTableSummaryItem
但是我在tcxgriddbbandedtableview 中没有反应不显示??
、、、、、、、、、、、、、、、、、、
with tvOrders.DataController.Summary do
  begin
    BeginUpdate;
    try
      SummaryGroups.Clear;
      //The first summary group
      with SummaryGroups.Add do
      begin
        //Add proposed grouping column(s)
        TcxGridTableSummaryGroupItemLink(Links.Add).Column := tvOrdersCustomerID;
        //Add summary items
        with SummaryItems.Add as TcxGridDBTableSummaryItem do
        begin
          Column := tvOrdersPaymentAmount;
          Kind := skSum;
          Format := 'Amount Paid: $,0';
        end;
        with SummaryItems.Add as TcxGridDBTableSummaryItem do
        begin
          Column := tvOrdersPaymentAmount;
          Kind := skCount;
          Format := 'Records: 0';
        end;
      end;
      //The second summary group
      with SummaryGroups.Add do
      begin
        //Add proposed grouping column(s)
        TcxGridTableSummaryGroupItemLink(Links.Add).Column := tvOrdersProductID;
        //Add summary items
        with SummaryItems.Add as TcxGridDBTableSummaryItem do
        begin
          Column := tvOrdersQuantity;
          Kind := skSum;
          Position := spFooter;
          Format := 'TOTAL = 0';
        end;
        with SummaryItems.Add as TcxGridDBTableSummaryItem do
        begin
          Column := tvOrdersPurchaseDate;
          Kind := skMin;
          Position := spFooter;
        end;
      end;
    finally
      EndUpdate;
    end;
  end;
、、、、、、、、、、、、、、、、、、、、、、、、、
group的也一样!
根据如下创建的字段 没有名字
With cxgrid1dbbandedtableview1.CreateColumn do
    begin
     Caption :='月%';
     DataBinding.FieldName:='zpmp' ;
     Position.BandIndex := 4;
     Position.RowIndex := 0;
     //Position.LineCount:=1;
     Visible := True;
showmessage(cxgrid1dbbandedtableview1.CreateColumn.Name);、、、
      end;
从而引起了以上的错误,我想,不知道有没有高手帮忙


从帮助中看到两个例子:、、
、、、、、、、、、、、、、、
procedure TForm1.cxGrid1DBTableView1TcxGridDBDataControllerTcxDataSummary
DefaultGroupSummaryItemsSummary(
  ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments;
  var OutArguments: TcxSummaryEventOutArguments);
begin
  if (VarIsNull(OutArguments.Value)) then
    OutArguments.Done := True;
end;
/////////////////////
//Delphi
procedure TForm1.cxGrid1DBTableView1TcxGridDBDataControllerTcxDataSummary
DefaultGroupSummaryItemsSummary(
  ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments;
  var OutArguments: TcxSummaryEventOutArguments);
var
  AArea, APopulation: Extended;
begin
  //Locate a value in the specific record for Area item
  AArea := ASender.DataController.Values[Arguments.RecordIndex, DBTableView1Area.Index];
  //Locate a value in the specific record for Population item
  APopulation := ASender.DataController.Values[Arguments.RecordIndex, DBTableView1Population.Index];
  //Set population density to Value
  OutArguments.Value := APopulation / AArea;
end;
不知道如何取得另一字段的foooter 和更改这一字段的footer 


发现一个example
、、、、、、、、、、、、、、、、、、、
In this example, a summary value is calculated based on the results of other two summaries.  The TcxDataSummary.OnAfterSummary event, which occurs when all summaries are already calculated, is used to calculate a new summary.
Let us examine a table that represents information from the pricelist containing three columns: VendorNo, Description, ListPrice.  We want to group data by vendor and calculate three summaries: the summary that displays a sum of the ListPrice column values, the summary representing the number of goods supplied by a specific vendor and the summary that displays the average value of the ListPrice column values.  Though it is possible to create an average summary by specifying its skAverage type, we will calculate it based on two other summary values and format it in a specific manner.  
The Initialize procedure groups data by vendor and creates three summaries.  The third summary is of the skNone type.  It is substituted for the average summary in MyAfterSummary (the OnAfterSummary event handler).
//Delphi
procedure TForm1.Initialize;
var
  ASummaryItem: TcxDataSummaryItem;
begin
  //group by vendor
  DBTableView1VendorNo.GroupIndex := 0;
  DBTableView1VendorNo.Visible := False;
  with DBTableView1.DataController.Summary do
  begin
    BeginUpdate;
    try
      //set prefix and postfix for a group capion
      DefaultGroupSummaryItems.BeginText := '{';
      DefaultGroupSummaryItems.EndText := '}';
      //summary on ListPrice
      ASummaryItem := DefaultGroupSummaryItems.Add;
      ASummaryItem.Kind := skSum;
      ASummaryItem.ItemLink := DBTableView1ListPrice;
      ASummaryItem.Position := spFooter;
      //summary on Description
      ASummaryItem := DefaultGroupSummaryItems.Add;
      ASummaryItem.Kind := skCount;
      ASummaryItem.ItemLink := DBTableView1Description;
      ASummaryItem.Position := spFooter;
      //dummy summary on Description
      ASummaryItem := DefaultGroupSummaryItems.Add;
      ASummaryItem.Kind := skNone;
      ASummaryItem.ItemLink := DBTableView1Description;
      //subscribe to the OnAfterSummary event
      OnAfterSummary := MyAfterSummary;
    finally
      EndUpdate;
    end;
  end;
end;
procedure TForm1.MyAfterSummary(ASender: TcxDataSummary);
var
  AChildDataGroupsCount: Integer;
  AChildDataGroupIndex, AParentDataGroupIndex: TcxDataGroupIndex;
  AChildPosition: Integer;
begin
  //iterate through data groups at the level 0
  AParentDataGroupIndex := -1;
  with DBTableView1.DataController.Groups do
  begin
    AChildDataGroupsCount := ChildCount[AParentDataGroupIndex];
    for AChildPosition := 0 to AChildDataGroupsCount - 1 do
    begin
      //data group index of a child
      AChildDataGroupIndex := ChildDataGroupIndex[AParentDataGroupIndex, AChildPosition];
      CalculateGroupAverage(AChildDataGroupIndex);
    end;
  end;
end;
procedure TForm1.CalculateGroupAverage(ADataGroupIndex: TcxDataGroupIndex);
var
  AVarSum, AVarCount, AVarAverage: Variant;
begin
  with DBTableView1.DataController.Summary do
  begin
    //get sum of prices for specific data group
    //the second argument identifies a summary index in the
    //TcxDataSummary.DefaultGroupSummaryItems collection
    AVarSum := GroupSummaryValues[ADataGroupIndex, 0];
    //get records count in a group
    AVarCount := GroupSummaryValues[ADataGroupIndex, 1];
    if not (VarIsNull(AVarSum) or VarIsNull(AVarCount)) then
    begin
      AVarAverage := AVarSum / AVarCount;
      GroupSummaryValues[ADataGroupIndex, 2] := Format('%m / %d = %m', [Double(AVarSum), Integer(AVarCount), Double(AVarAverage)]);
    end;
  end;
end;

posted @ 2011-01-02 15:29  覆雨翻云  阅读(2813)  评论(0编辑  收藏  举报