チャートの軸の最大値に最大の系列値よりもかなり小さい値を手動で設定した場合、例外が発生する
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
チャートの軸の最大値に最大の系列値よりもかなり小さい値を手動で設定した場合、例外(System.Exception)が発生します。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
--例外(System.Exception)が発生します
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' データの作成
FpSpread1.ActiveSheet.SetArray(0, 0, New Object(,) {{Nothing, "A", "B", "C", "D", "E"}})
' Y軸の最大最小から大きく離れた値をデータに設定
FpSpread1.ActiveSheet.SetArray(1, 0, New Object(,) {{"S-1", 10, 20, 30, 40, 1000000000}})
' チャートの作成
Dim chart1 As New FarPoint.Win.Spread.Chart.SpreadChart()
chart1.ChartName = "chart1"
chart1.Size = New Size(600, 400)
chart1.Location = New Point(0, 30)
' シリーズの作成
Dim series1 As New FarPoint.Win.Chart.LineSeries
series1.SeriesNameDataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
series1.CategoryNames.DataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
series1.Values.DataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2")
series1.PointMarker = New FarPoint.Win.Chart.BuiltinMarker(FarPoint.Win.Chart.MarkerShape.Circle, 5)
' プロットエリアの作成
Dim plotArea As New FarPoint.Win.Chart.YPlotArea()
plotArea.Location = New PointF(0.15F, 0.05F)
plotArea.Size = New SizeF(0.7F, 0.55F)
plotArea.Series.Add(series1)
' Y軸の最大・最小を設定する。
plotArea.YAxes(0).AutoMaximum = False
plotArea.YAxes(0).AutoMinimum = False
plotArea.YAxes(0).Maximum = 100
plotArea.YAxes(0).Minimum = 0
' チャートモデルの作成と設定
Dim model As New FarPoint.Win.Chart.ChartModel()
model.PlotAreas.Add(plotArea)
chart1.Model = model
' SPREADの設定
FpSpread1.ActiveSheet.Charts.Add(chart1)
End Sub
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
--例外(System.Exception)が発生します
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' データの作成
FpSpread1.ActiveSheet.SetArray(0, 0, New Object(,) {{Nothing, "A", "B", "C", "D", "E"}})
' Y軸の最大最小から大きく離れた値をデータに設定
FpSpread1.ActiveSheet.SetArray(1, 0, New Object(,) {{"S-1", 10, 20, 30, 40, 1000000000}})
' チャートの作成
Dim chart1 As New FarPoint.Win.Spread.Chart.SpreadChart()
chart1.ChartName = "chart1"
chart1.Size = New Size(600, 400)
chart1.Location = New Point(0, 30)
' シリーズの作成
Dim series1 As New FarPoint.Win.Chart.LineSeries
series1.SeriesNameDataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
series1.CategoryNames.DataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldCategoryName", "Sheet1!$B$1:$F$1", FarPoint.Win.Spread.Chart.SegmentDataType.Text)
series1.Values.DataSource = New FarPoint.Win.Spread.Chart.SeriesDataField(FpSpread1, "DataFieldValue", "Sheet1!$B$2:$F$2")
series1.PointMarker = New FarPoint.Win.Chart.BuiltinMarker(FarPoint.Win.Chart.MarkerShape.Circle, 5)
' プロットエリアの作成
Dim plotArea As New FarPoint.Win.Chart.YPlotArea()
plotArea.Location = New PointF(0.15F, 0.05F)
plotArea.Size = New SizeF(0.7F, 0.55F)
plotArea.Series.Add(series1)
' Y軸の最大・最小を設定する。
plotArea.YAxes(0).AutoMaximum = False
plotArea.YAxes(0).AutoMinimum = False
plotArea.YAxes(0).Maximum = 100
plotArea.YAxes(0).Minimum = 0
' チャートモデルの作成と設定
Dim model As New FarPoint.Win.Chart.ChartModel()
model.PlotAreas.Add(plotArea)
chart1.Model = model
' SPREADの設定
FpSpread1.ActiveSheet.Charts.Add(chart1)
End Sub
回避方法
Service Pack 5(v7.0.2018.2008)で修正済み。