PowerTools MultiRow for Windows Forms 8.0J
Calculate メソッド (ICalculation)
使用例 

現在の計算コンテキスト状態を表すCalculationContext
指定したコンテキストの値を計算します。
構文
Function Calculate( _
   ByVal context As CalculationContext _
) As Object

パラメータ

context
現在の計算コンテキスト状態を表すCalculationContext

戻り値の型

計算結果を表すSystem.Object値。
使用例
次のサンプルコードは、集計セルの計算ロジックをカスタマイズする方法を示します。このサンプルコードは、SummaryCellクラスに示されている詳細なコード例の一部を抜粋したものです。
private SummaryCell CreateCustomSummaryCell()
{
    SummaryCell summaryCell = new SummaryCell();
    // Custom calculation logic.
    summaryCell.Calculation = new PercentageCalculation();
    summaryCell.Style.Format = "#0.00%";
    summaryCell.Style.BackColor = Color.Wheat;
    return summaryCell;
}

class PercentageCalculation : ICalculation
{
    public object Calculate(CalculationContext context)
    {
        // calculate the percentage base on current section's sub-total in total.
        object subTotalValue = context.GcMultiRow[context.SectionIndex, "SubTotal"].Value;
        object totalValue = context.GcMultiRow.ColumnFooters[0]["Total"].Value;

        if (object.Equals(totalValue, 0m))
        {
            // context.ErrorInfo = "Total is 0.";
            return "Total is 0";
        }

        return (decimal)subTotalValue / (decimal)totalValue;
    }

    public object Clone()
    {
        // If you and new property in the calculation, make sure the property is cloned in this method.
        return new PercentageCalculation();
    }
}
Private Function CreateCustomSummaryCell() As SummaryCell
    Dim summaryCell As New SummaryCell()
    ' Custom calculation logic.
    summaryCell.Calculation = New PercentageCalculation()
    summaryCell.Style.Format = "#0.00%"
    summaryCell.Style.BackColor = Color.Wheat
    Return summaryCell
End Function

Private Class PercentageCalculation
    Implements ICalculation
    Public Function Calculate(ByVal context As CalculationContext) As Object Implements ICalculation.Calculate
        ' calculate the percentage base on current section's sub-total in total.
        Dim subTotalValue As Object = context.GcMultiRow(context.SectionIndex, "SubTotal").Value
        Dim totalValue As Object = context.GcMultiRow.ColumnFooters(0)("Total").Value

        If Object.Equals(totalValue, 0D) Then
            ' context.ErrorInfo = "Total is 0.";
            Return "Total is 0"
        End If

        Return DirectCast(subTotalValue, Decimal) / DirectCast(totalValue, Decimal)
    End Function

    Public Function Clone() As Object Implements ICloneable.Clone
        ' If you and new property in the calculation, make sure the property is cloned in this method.
        Return New PercentageCalculation()
    End Function
End Class
参照

ICalculation インターフェース
ICalculation メンバ

 

 


© 2008-2015 GrapeCity inc. All rights reserved.