Back to Devexpress

How to Add an Unbound Field to Supply Additional Data

vcl-157010-expresspivotgrid-concepts-how-to-add-an-unbound-field-to-supply-additional-data.md

latest2.4 KB
Original Source

How to Add an Unbound Field to Supply Additional Data

  • Sep 06, 2024
  • 2 minutes to read

The following code snippet adds two unbound fields which represent a discount and discount value for orders. For analyzing purposes, a discount of 10% is applied to all the orders in a bound data source. A discount value is calculated for each payment referenced by the DBPivotGridPaymentAmount field.

delphi
var
  I: Integer;
  ADiscountField: TcxPivotGridField;
begin
  DBPivotGrid.BeginUpdate;
  ADiscountField := DBPivotGrid.CreateField;
  with ADiscountField do
  begin
    Caption := 'Discount';
    DisplayFormat := '0.0%';
    SummaryType := stMin;
    Visible := True;
    Area := faData;
    DataBinding.ValueType := 'Float';
    for I := 0 to PivotGrid.DataController.RecordCount - 1 do
      Values[I] := 10;
  end;
  with DBPivotGrid.CreateField do
  begin
    Caption := 'Discount value';
    SummaryType := stSum;
    Visible := True;
    Area := faData;
    DataBinding.ValueType := 'Currency';
    with PivotGrid.DataController do
      for I := 0 to RecordCount - 1 do
        Values[I] := Values[I, DBPivotGridPaymentAmount.Index] *
          Values[I, ADiscountField.Index] / 100;
  end;
  DBPivotGrid.EndUpdate;
end;
cpp
DBPivotGrid->BeginUpdate();
  try {
    TcxPivotGridField *ADiscountField = DBPivotGrid->CreateField();
    ADiscountField->Caption = "Discount";
    ADiscountField->DisplayFormat = "0.0%";
    ADiscountField->SummaryType = stMin;
    ADiscountField->Visible = True;
    ADiscountField->Area = faData;
    ADiscountField->DataBinding->ValueType = "Float";
    for(int I = 0; I < DBPivotGrid->DataController->RecordCount; I++)
      ADiscountField->Values[I] = 10;
    TcxPivotGridField *ADiscountValueField = DBPivotGrid->CreateField();
    ADiscountValueField->Caption = "Discount value";
    ADiscountValueField->SummaryType = stSum;
    ADiscountValueField->Visible = True;
    ADiscountValueField->Area = faData;
    ADiscountValueField->DataBinding->ValueType = "Currency";
    for(int I = 0; I < DBPivotGrid->DataController->RecordCount; I ++)
      ADiscountValueField->Values[I] = DBPivotGridPaymentAmount->Values[I] *
        ADiscountField->Values[I] / 100;
  }
  __finally {
    DBPivotGrid->EndUpdate();
  }