処理コードの作成
グリッドデータを元にバブルチャートを作成する処理を組み立てていきます。処理の大まかな流れは以下のようになります。
- グリッドの行ラベルの作成(Form1_Load)
- グリッドの列ラベルの設定(Button4_Click)
- グリッドからデータを取得(Button2_Click)
-
グラフの設定(Button2_Click)
- 軸ラベルの作成
- グラフデータのセット
- シンボルの描画設定
- ラベルの作成
- グラフ表示の範囲設定(Button1_Click)
- グラフの保存(Button3_Click)
グリッドの行ラベルの作成
最初に、グリッドの行番号を設定する処理を、フォームのLoadイベントハンドラに作成します。 これは行ヘッダに1から7までの数字を入れる処理で、C1FlexGridコントロール名に()で行列番号のインデックスを指定し、そのまま値を代入します。
Imports C1.Win.C1Chart
Public Class Form1
'----------------------- グリッドの行ラベルの作成 ----------------------------------------------------
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
For i = 1 To 7
C1FlexGrid1(i, 0) = i
Next
End Sub
using C1.Win.C1Chart;
namespace Bubble_cs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//----------------------- グリッドの行ラベルの作成 ----------------------------------------------------
private void Form1_Load(object sender, EventArgs e)
{
int i;
for (i = 1; i <= 7; i++)
{
c1FlexGrid1[i, 0] = i;
}
}
C1FlexGridコントロールへの列ラベルの設定処理
続いて、グリッドの列ラベルを設定する処理を、「Button4」のClickイベントハンドラに作成します。
グリッドの列ラベルは、フォームデザイン時に一度設定していますが、データの内容によって入れ換えられるようにしておきます。この処理は、4つのTextBoxコントロールの入力データを、グリッドの列ヘッダに設定します。列ヘッダのテキストの入れ替えは、C1FlexGrid1コントロールのColsプロパティの引数に列番号を指定し、Captionプロパティに値を設定します。
'----------------------- グリッドの列ラベルの設定 ----------------------------------------------------
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
If TextBox5.Text <> "" Then
C1FlexGrid1.Cols(1).Caption = TextBox5.Text
End If
If TextBox6.Text <> "" Then
C1FlexGrid1.Cols(2).Caption = TextBox6.Text
End If
If TextBox7.Text <> "" Then
C1FlexGrid1.Cols(3).Caption = TextBox7.Text
End If
If TextBox8.Text <> "" Then
C1FlexGrid1.Cols(4).Caption = TextBox8.Text
End If
End Sub
//----------------------- グリッドの列ラベルの設定 ----------------------------------------------------
private void button4_Click(object sender, EventArgs e)
{
if( textBox5.Text != "")
{
c1FlexGrid1.Cols[1].Caption = textBox5.Text;
}
if( textBox6.Text != "")
{
c1FlexGrid1.Cols[2].Caption = textBox6.Text;
}
if( textBox7.Text != "")
{
c1FlexGrid1.Cols[3].Caption = textBox7.Text;
}
if( textBox8.Text != "")
{
c1FlexGrid1.Cols[4].Caption = textBox8.Text;
}
}
グリッドからデータを取得
グリッドの準備ができたら、グリッドからデータを取得します。
グラフの作成には、グリッドの「X軸」「Y軸」「Y1」という3列分のデータが必要なので、これをC1FlexGridコントロールのGetDataDisplayメソッドを使って取得し、配列に格納しておきます。
GetDataDisplayメソッドは、セルの値を文字列として取得して返してくるメソッドで、引数にセルの位置を行列番号で指定します。メソッドの戻り値が文字列なので、ConvertクラスのToInt16メソッドで整数に変換してから、配列に格納します。
'----------------------- グラフ作成 ----------------------------------------------------
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim xp(6) As Integer
Dim yp(6) As Integer
Dim vol(6) As Integer
Dim i As Integer
'グリッドからデータを取得
For i = 0 To 6
xp(i) = Convert.ToInt16(C1FlexGrid1.GetDataDisplay(i + 1, 2))
yp(i) = Convert.ToInt16(C1FlexGrid1.GetDataDisplay(i + 1, 3))
vol(i) = Convert.ToInt16(C1FlexGrid1.GetDataDisplay(i + 1, 4))
Next i
//----------------------- グラフ作成 ----------------------------------------------------
private void button2_Click(object sender, EventArgs e)
{
int[] xp = new int[7];
int[] yp = new int[7];
int[] vol = new int[7];
int i;
//グリッドからデータを取得
for(i=0; i<=6; i++)
{
xp[i] = Convert.ToInt16(c1FlexGrid1.GetDataDisplay(i + 1, 2));
yp[i] = Convert.ToInt16(c1FlexGrid1.GetDataDisplay(i + 1, 3));
vol[i] = Convert.ToInt16(c1FlexGrid1.GetDataDisplay(i + 1, 4));
}


