PowerTools SPREAD for Windows Forms 8.0J 移行ガイド
複数のチャート間で同一データソースを使用することができない


ステータス

バージョン ID 機能分類 対応策
5.0.2027.2008 70004 チャート

詳細

旧バージョンでは、1つのチャートデータソースを複数のシリーズで使用することが可能でしたが、新バージョンではチャートデータソースは1つのシリーズのみ使用可能です。(複数のシリーズに設定されている場合は、2つ目以降の設定が無視されます)

以下は、新バージョンでは許可されない設定方法です。

private void button1_Click(object sender, EventArgs e)
{
    // sample data
    fpSpread1.ActiveSheet.SetArray(0, 0, new Object[,] { { null, "A", "B", "C", "D", "E" } });
    fpSpread1.ActiveSheet.SetArray(1, 0, new Object[,] { { "S-1", 50, 25, 55, 30, 26 } });

    // datasource 
    FarPoint.Win.Spread.Chart.SeriesDataField df1 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
    FarPoint.Win.Spread.Chart.SeriesDataField df2 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
    FarPoint.Win.Spread.Chart.SeriesDataField df3 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2");
    
    // LineSeries
    FarPoint.Win.Chart.LineSeries series = new FarPoint.Win.Chart.LineSeries();
    series.SeriesNameDataSource = df1;
    series.CategoryNames.DataSource = df2;
    series.Values.DataSource = df3;
    
    // BarSeries
    FarPoint.Win.Chart.BarSeries bseries = new FarPoint.Win.Chart.BarSeries();
    
    // LineSeriesと同じデータソースを設定   
    bseries.SeriesNameDataSource = df1;
    bseries.CategoryNames.DataSource = df2;
    bseries.Values.DataSource = df3;
    
    // PlotArea  
    FarPoint.Win.Chart.YPlotArea plotArea = new FarPoint.Win.Chart.YPlotArea();
    plotArea.Location = new PointF(0.2f, 0.2f);
    plotArea.Size = new SizeF(0.6f, 0.6f);
    plotArea.Series.Add(series);
    
    // ChartModel
    FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();
    model.PlotAreas.Add(plotArea);
    
    // SpreadChart  
    FarPoint.Win.Spread.Chart.SpreadChart chart1 = new FarPoint.Win.Spread.Chart.SpreadChart();
    chart1.ChartName = "chart1";
    chart1.Size = new Size(200, 180);
    chart1.Location = new Point(0, 60);
    chart1.Model = model;

    // PlotArea2
    FarPoint.Win.Chart.YPlotArea plotArea2 = new FarPoint.Win.Chart.YPlotArea();
    plotArea2.Location = new PointF(0.2f, 0.2f);
    plotArea2.Size = new SizeF(0.6f, 0.6f);
    plotArea2.Series.Add(bseries);

    // ChartModel 2 
    FarPoint.Win.Chart.ChartModel model2 = new FarPoint.Win.Chart.ChartModel();
    model2.PlotAreas.Add(plotArea2);

    // SpreadChart 2   
    FarPoint.Win.Spread.Chart.SpreadChart chart2 = new FarPoint.Win.Spread.Chart.SpreadChart();
    chart2.ChartName = "chart2";
    chart2.Size = new Size(200, 180);
    chart2.Location = new Point(60, 60);
    chart2.Model = model2;

    fpSpread1.ActiveSheet.Charts.Clear();
    fpSpread1.ActiveSheet.Charts.Add(chart1);
    fpSpread1.ActiveSheet.Charts.Add(chart2);

    fpSpread1.ActiveSheet.Charts.Remove(chart1);
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' sample data 
    fpSpread1.ActiveSheet.SetArray(0, 0, New [Object](,) {{Nothing, "A", "B", "C", "D", "E"}})
    fpSpread1.ActiveSheet.SetArray(1, 0, New [Object](,) {{"S-1", 50, 25, 55, 30, 26}})

    ' datasource   
    Dim df1 As New FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
    Dim df2 As New FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
    Dim df3 As New FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2")

    ' LineSeries
    Dim series As New FarPoint.Win.Chart.LineSeries()
    series.SeriesNameDataSource = df1
    series.CategoryNames.DataSource = df2
    series.Values.DataSource = df3

    ' BarSeries   
    Dim bseries As New FarPoint.Win.Chart.BarSeries()

    ' LineSeriesと同じデータソースを設定 
    bseries.SeriesNameDataSource = df1
    bseries.CategoryNames.DataSource = df2
    bseries.Values.DataSource = df3

    ' PlotArea   
    Dim plotArea As New FarPoint.Win.Chart.YPlotArea()
    plotArea.Location = New PointF(0.2F, 0.2F)
    plotArea.Size = New SizeF(0.6F, 0.6F)
    plotArea.Series.Add(series)

    ' ChartModel    
    Dim model As New FarPoint.Win.Chart.ChartModel()
    model.PlotAreas.Add(plotArea)

    ' SpreadChart  
    Dim chart1 As New FarPoint.Win.Spread.Chart.SpreadChart()
    chart1.ChartName = "chart1"
    chart1.Size = New Size(200, 180)
    chart1.Location = New Point(0, 60)
    chart1.Model = model

    ' PlotArea2  
    Dim plotArea2 As New FarPoint.Win.Chart.YPlotArea()
    plotArea2.Location = New PointF(0.2F, 0.2F)
    plotArea2.Size = New SizeF(0.6F, 0.6F)
    plotArea2.Series.Add(bseries)

    ' ChartModel 2 
    Dim model2 As New FarPoint.Win.Chart.ChartModel()
    model2.PlotAreas.Add(plotArea2)

    ' SpreadChart 2  
    Dim chart2 As New FarPoint.Win.Spread.Chart.SpreadChart()
    chart2.ChartName = "chart2"
    chart2.Size = New Size(200, 180)
    chart2.Location = New Point(60, 60)
    chart2.Model = model2

    fpSpread1.ActiveSheet.Charts.Clear()
    fpSpread1.ActiveSheet.Charts.Add(chart1)
    fpSpread1.ActiveSheet.Charts.Add(chart2)

    fpSpread1.ActiveSheet.Charts.Remove(chart1)
End Sub

新バージョンでの回避方法は以下のとおりです。

private void button1_Click(object sender, EventArgs e)
{
    // sample data 
    fpSpread1.ActiveSheet.SetArray(0, 0, new Object[,] { { null, "A", "B", "C", "D", "E" } });
    fpSpread1.ActiveSheet.SetArray(1, 0, new Object[,] { { "S-1", 50, 25, 55, 30, 26 } });

    // datasource 
    FarPoint.Win.Spread.Chart.SeriesDataField df1 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
    FarPoint.Win.Spread.Chart.SeriesDataField df2 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
    FarPoint.Win.Spread.Chart.SeriesDataField df3 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2");
    
    // BarSeries用のデータソースを作成 
    FarPoint.Win.Spread.Chart.SeriesDataField df1_2 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
    FarPoint.Win.Spread.Chart.SeriesDataField df2_2 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
    FarPoint.Win.Spread.Chart.SeriesDataField df3_2 = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2");
    
    // LineSeries   
    FarPoint.Win.Chart.LineSeries series = new FarPoint.Win.Chart.LineSeries();
    series.SeriesNameDataSource = df1;
    series.CategoryNames.DataSource = df2;
    series.Values.DataSource = df3;
    
    // BarSeries 
    FarPoint.Win.Chart.BarSeries bseries = new FarPoint.Win.Chart.BarSeries();
    // LineSeriesと同じデータソースを設定   
    //bseries.SeriesNameDataSource = df1;   
    //bseries.CategoryNames.DataSource = df2;
    //bseries.Values.DataSource = df3;   
    bseries.SeriesNameDataSource = df1_2;
    bseries.CategoryNames.DataSource = df2_2;
    bseries.Values.DataSource = df3_2;

    // PlotArea
    FarPoint.Win.Chart.YPlotArea plotArea = new FarPoint.Win.Chart.YPlotArea();
    plotArea.Location = new PointF(0.2f, 0.2f);
    plotArea.Size = new SizeF(0.6f, 0.6f);
    plotArea.Series.Add(series);

    // ChartModel  
    FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();
    model.PlotAreas.Add(plotArea);

    // SpreadChart
    FarPoint.Win.Spread.Chart.SpreadChart chart1 = new FarPoint.Win.Spread.Chart.SpreadChart();
    chart1.ChartName = "chart1";
    chart1.Size = new Size(200, 180);
    chart1.Location = new Point(0, 60);
    chart1.Model = model;

    // PlotArea2   
    FarPoint.Win.Chart.YPlotArea plotArea2 = new FarPoint.Win.Chart.YPlotArea();
    plotArea2.Location = new PointF(0.2f, 0.2f);
    plotArea2.Size = new SizeF(0.6f, 0.6f);
    plotArea2.Series.Add(bseries);

    // ChartModel 2 
    FarPoint.Win.Chart.ChartModel model2 = new FarPoint.Win.Chart.ChartModel();
    model2.PlotAreas.Add(plotArea2);

    // SpreadChart 2 
    FarPoint.Win.Spread.Chart.SpreadChart chart2 = new FarPoint.Win.Spread.Chart.SpreadChart();
    chart2.ChartName = "chart2";
    chart2.Size = new Size(200, 180);
    chart2.Location = new Point(60, 60);
    chart2.Model = model2;

    fpSpread1.ActiveSheet.Charts.Clear();
    fpSpread1.ActiveSheet.Charts.Add(chart1);
    fpSpread1.ActiveSheet.Charts.Add(chart2);

    fpSpread1.ActiveSheet.Charts.Remove(chart1);
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' sample data
    fpSpread1.ActiveSheet.SetArray(0, 0, New [Object](,) {{Nothing, "A", "B", "C", "D", "E"}})
    fpSpread1.ActiveSheet.SetArray(1, 0, New [Object](,) {{"S-1", 50, 25, 55, 30, 26}})

    ' datasource    
    Dim df1 As New FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
    Dim df2 As New FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
    Dim df3 As New FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2")
    Dim df1_2 As New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
    Dim df2_2 As New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
    Dim df3_2 As New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2")

    ' LineSeries
    Dim series As New FarPoint.Win.Chart.LineSeries()
    series.SeriesNameDataSource = df1
    series.CategoryNames.DataSource = df2
    series.Values.DataSource = df3

    ' BarSeries  
    Dim bseries As New FarPoint.Win.Chart.BarSeries()

    '' LineSeriesと同じデータソースを設定  
    'bseries.SeriesNameDataSource = df1     
    'bseries.CategoryNames.DataSource = df2  
    'bseries.Values.DataSource = df3  
    bseries.SeriesNameDataSource = df1_2
    bseries.CategoryNames.DataSource = df2_2
    bseries.Values.DataSource = df3_2

    ' PlotArea  
    Dim plotArea As New FarPoint.Win.Chart.YPlotArea()
    plotArea.Location = New PointF(0.2F, 0.2F)
    plotArea.Size = New SizeF(0.6F, 0.6F)
    plotArea.Series.Add(series)

    ' ChartModel  
    Dim model As New FarPoint.Win.Chart.ChartModel()
    model.PlotAreas.Add(plotArea)

    ' SpreadChart   
    Dim chart1 As New FarPoint.Win.Spread.Chart.SpreadChart()
    chart1.ChartName = "chart1"
    chart1.Size = New Size(200, 180)
    chart1.Location = New Point(0, 60)
    chart1.Model = model

    ' PlotArea2   
    Dim plotArea2 As New FarPoint.Win.Chart.YPlotArea()
    plotArea2.Location = New PointF(0.2F, 0.2F)
    plotArea2.Size = New SizeF(0.6F, 0.6F)
    plotArea2.Series.Add(bseries)

    ' ChartModel 2   
    Dim model2 As New FarPoint.Win.Chart.ChartModel()
    model2.PlotAreas.Add(plotArea2)

    ' SpreadChart 2   
    Dim chart2 As New FarPoint.Win.Spread.Chart.SpreadChart()
    chart2.ChartName = "chart2"
    chart2.Size = New Size(200, 180)
    chart2.Location = New Point(60, 60)
    chart2.Model = model2

    fpSpread1.ActiveSheet.Charts.Clear()
    fpSpread1.ActiveSheet.Charts.Add(chart1)
    fpSpread1.ActiveSheet.Charts.Add(chart2)

    fpSpread1.ActiveSheet.Charts.Remove(chart1)
End Sub
関連トピック

 

 


© 2004-2015, GrapeCity inc. All rights reserved.