PowerTools MultiRow for Windows Forms 8.0J
ICalculation インターフェース
メンバ  使用例 

指定したセルの値を計算できる機能を定義します。
構文
Public Interface ICalculation 
public interface ICalculation 
使用例
次のサンプルコードは、集計セルの計算ロジックをカスタマイズする方法を示します。このサンプルコードは、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 メンバ
GrapeCity.Win.MultiRow 名前空間
MathStatistics クラス
Expression クラス
SummaryCell クラス

 

 


© 2008-2015 GrapeCity inc. All rights reserved.