PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > チャート > チャートの作成 > データの接続 > セル範囲との連結 |
チャートの系列は、次の部分で構成されています。
SeriesDataFieldクラスのインスタンスを使用して、それぞれの部分をセル範囲に連結できます。
SeriesDataFieldクラスを使用して、各系列をセル範囲に連結する方法の他に、SheetViewクラスのAddChartメソッドを使用して、セル範囲に連結されたチャートをシートに追加する方法があります。この場合、対象のセル範囲から、系列が自動的に作成されます。 |
対象の系列(たとえば折れ線チャートであれば、LineSeriesクラス)の次のプロパティに、SeriesDataFieldオブジェクトを設定します。SeriesDataFieldオブジェクトのFormulaプロパティで、連結するセル範囲、または数式を指定します。
次のサンプルコードは、まず、フォームのLoadイベントでSheetViewクラスのAddChartメソッドを使用して、セル範囲に連結されたチャートを追加します。
次にボタンのClickイベントで、セルにデータを追加し、チャートを新しいセル範囲に連結します。既存の系列のカテゴリ名、データ、新しい系列の系列名、およびデータを、それぞれSeriesDataFieldオブジェクトを使用してセル範囲に連結します。
C# |
コードのコピー
|
---|---|
private void Form1_Load(object sender, EventArgs e) { object[,] values = { { "", "Category-1", "Category-2" }, { "Series-A", 2.0, 5.0 }, { "Series-B", 4.0, 5.0 } }; fpSpread1.Sheets[0].SetArray(0, 0, values); FarPoint.Win.Spread.Model.CellRange cellRange = new FarPoint.Win.Spread.Model.CellRange(0, 0, values.GetLength(0), values.GetLength(1)); fpSpread1.Sheets[0].AddChart(cellRange, typeof(FarPoint.Win.Chart.LineSeries), 400, 400, 100, 100); } private void button1_Click(object sender, EventArgs e) { fpSpread1.Sheets[0].SetArray(0, 3, new object[,] { { "Category-3" }, { 4.0 }, { 2.0 } }); fpSpread1.Sheets[0].SetArray(3, 0, new object[,] { { "Series-C", 3.0, 2.0, 1.0 } }); FarPoint.Win.Chart.YPlotArea plotArea = (FarPoint.Win.Chart.YPlotArea)fpSpread1.Sheets[0].Charts[0].Model.PlotAreas[0]; FarPoint.Win.Chart.LineSeries series; FarPoint.Win.Spread.Chart.SeriesDataField data; series = (FarPoint.Win.Chart.LineSeries)plotArea.Series[0]; series.CategoryNames.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$D$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text); data = (FarPoint.Win.Spread.Chart.SeriesDataField)series.Values.DataSource; data.Formula = "Sheet1!$B$2:$D$2"; series = (FarPoint.Win.Chart.LineSeries)plotArea.Series[1]; data = (FarPoint.Win.Spread.Chart.SeriesDataField)series.Values.DataSource; data.Formula = "Sheet1!$B$3:$D$3"; series = new FarPoint.Win.Chart.LineSeries(); series.SeriesNameDataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$4:$A$4", FarPoint.Win.Spread.Chart.SegmentDataType.Text); series.Values.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$4:$D$4"); plotArea.Series.Add(series); } |
Visual Basic |
コードのコピー
|
---|---|
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim values As Object(,) = {{"", "Category-1", "Category-2"}, {"Series-A", 2.0, 5.0}, {"Series-B", 4.0, 5.0}} FpSpread1.Sheets(0).SetArray(0, 0, values) Dim cellRange As New FarPoint.Win.Spread.Model.CellRange(0, 0, values.GetLength(0), values.GetLength(1)) FpSpread1.Sheets(0).AddChart(cellRange, GetType(FarPoint.Win.Chart.LineSeries), 400, 400, 100, 100) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click FpSpread1.Sheets(0).SetArray(0, 3, New Object(,) {{"Category-3"}, {4.0}, {2.0}}) FpSpread1.Sheets(0).SetArray(3, 0, New Object(,) {{"Series-C", 3.0, 2.0, 1.0}}) Dim plotArea As FarPoint.Win.Chart.YPlotArea = DirectCast(FpSpread1.Sheets(0).Charts(0).Model.PlotAreas(0), FarPoint.Win.Chart.YPlotArea) Dim series As FarPoint.Win.Chart.LineSeries Dim data As FarPoint.Win.Spread.Chart.SeriesDataField series = DirectCast(plotArea.Series(0), FarPoint.Win.Chart.LineSeries) series.CategoryNames.DataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$D$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text) data = DirectCast(series.Values.DataSource, FarPoint.Win.Spread.Chart.SeriesDataField) data.Formula = "Sheet1!$B$2:$D$2" series = DirectCast(plotArea.Series(1), FarPoint.Win.Chart.LineSeries) data = DirectCast(series.Values.DataSource, FarPoint.Win.Spread.Chart.SeriesDataField) data.Formula = "Sheet1!$B$3:$D$3" series = New FarPoint.Win.Chart.LineSeries() series.SeriesNameDataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldSeriesName", "Sheet1!$A$4:$A$4", FarPoint.Win.Spread.Chart.SegmentDataType.Text) series.Values.DataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldValue", "Sheet1!$B$4:$D$4") plotArea.Series.Add(series) End Sub |
次のサンプルコードは、コントロールをデータテーブルに連結した例です。セルには、データテーブルのデータが設定されています。これらのデータを使用したチャートを、SheetViewクラスのAddChartメソッドで追加しています。
C# |
コードのコピー
|
---|---|
DataTable dt = new DataTable("Test"); DataRow dr = default(DataRow); dt.Columns.Add("Series1"); dt.Columns.Add("Series2"); dr = dt.NewRow(); dr[0] = 1; dr[1] = 4; dt.Rows.Add(dr); dr = dt.NewRow(); dr[0] = 2; dr[1] = 5; dt.Rows.Add(dr); dr = dt.NewRow(); dr[0] = 3; dr[1] = 6; dt.Rows.Add(dr); fpSpread1.DataSource = dt; FarPoint.Win.Spread.Model.CellRange cellRange = new FarPoint.Win.Spread.Model.CellRange(0, 0, 3, 3); fpSpread1.Sheets[0].AddChart(cellRange, typeof(FarPoint.Win.Chart.PointSeries), 400, 400, 0, 0); |
Visual Basic |
コードのコピー
|
---|---|
Dim dt As New DataTable("Test") Dim dr As DataRow dt.Columns.Add("Series1") dt.Columns.Add("Series2") dr = dt.NewRow() dr(0) = 1 dr(1) = 4 dt.Rows.Add(dr) dr = dt.NewRow() dr(0) = 2 dr(1) = 5 dt.Rows.Add(dr) dr = dt.NewRow() dr(0) = 3 dr(1) = 6 dt.Rows.Add(dr) FpSpread1.DataSource = dt Dim cellRange As New FarPoint.Win.Spread.Model.CellRange(0, 0, 3, 3) FpSpread1.Sheets(0).AddChart(cellRange, GetType(FarPoint.Win.Chart.PointSeries), 400, 400, 0, 0) |