処理コードの作成
グリッドデータを元にバブルチャートを作成する処理を組み立てていきます。処理の大まかな流れは以下のようになります。
- グリッドの行ラベルの作成(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)); }