CodeZine(コードジン)

特集ページ一覧

入力したデータがリアルタイムに反映されるバブルチャートを実装する

「PowerTools ComponentOne Studio 2012J」のC1Chart2D/C1FlexGridコントロールを使った.NETアプリケーションの作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/10/19 10:20
目次

今回使用するコンポーネントの特徴

 今回作成するアプリケーションは、C1FlexGridコントロールに入力したデータをC1Chart2Dコントロールで表示する、という機能を持たせます。 この2つのコントロールの概要・特徴を紹介します。

C1Chart2Dコントロール

 C1Chart2Dコントロールは、Windowsアプリケーションで使用可能なグラフコントロールです。 多種多様なグラフを作成することができ、それらの外観や動作を細かく制御できます。

  • 1つのプロパティでグラフ種別が変更可能
  • スマートデザイナによるインタラクティブなグラフ作成機能
  • グラフウィザードにより3つの手順でグラフを作成可能
  • [グラフのプロパティ]ダイアログボックスによる素早い設定が可能
  • 視覚エフェクトデザイナによる外観の強化
  • 20種類以上のテーマ別色を設定可能
  • 積層型グラフの作成
  • データ分析に視覚効果を追加
  • 1つのプロパティで軸を反転可能
  • 実行時のインタラクティブ操作が可能
  • グラフを画像として保存可能
  • 2種類のグラフの組み合わせが可能
  • 軸ラベルの回転表示が可能
  • ダイヤ型/クロス型などのシンボルによるデータセットの識別が可能
  • 高度な関数のプロットに役立つ組み込みエンジン
  • データセットの隠し表示や消去表示が可能
  • データラベルの自動作成
  • グラフ内の任意の場所に作成できる柔軟性に優れたグラフラベル
  • ツールチップの表示
  • ハッチ、グラデーション、テクスチャなどカスタムブラシの使用が可能
  • マウスカーソル下にあるグラフの座標やデータのインデックス追跡など高度なマウス追跡機能

 詳しい内容は、以前C1Chart(2D)コントロールを紹介した記事「Accessのデータをステップチャートで表示する.NETアプリケーションの作成」を参照してください。

C1FlexGridコントロール

 C1FlexGridコントロールは、多彩な表現力と柔軟性を兼ね備えた.NETネイティブのグリッドコンポーネントです。 マージ・ソートなどのグリッドに求められる基本仕様に加えて、マルチカラムコンボボックスや Excel、XML の各ファイルの入出力、セルボタン、アウトラインツリー表示、データベースとの連結、コンボボックスとイメージリストの変換、自動データ集計など、グリッドのデータ編集からプレビュー・印刷までをコントロール1つで実現します。

行と列

 C1FlexGridコントロールは行と列で構成され、それぞれ専用のコレクションオブジェクトで構成されています。 グリッドをデータソースに連結する場合、行および列の数はデータソースで使用できるデータ量によって自動的に設定されます。非連結モードでは、コレクションCountプロパティを使用し任意の値に設定できます。

 列幅は自由に設定でき、プロパティウィンドウでの操作に加え、デザイナ上で列の境界線をドラッグして変更することができます。また、特定の列のサイズ変更を禁止することもできます。

 行列ともにヘッダセルを持ち、任意の文字列を設定することができます。

境界線をドラッグして変更することが可能(ヘルプより抜粋)
境界線をドラッグして変更することが可能(ヘルプより抜粋)

データの取得と設定

 C1FlexGridコントロールのデータ操作は、連結モードと非連結モードのどちらの方法も使用できます。

 連結モードでは、グリッドはデータソースに接続され、グリッドに表示されるすべてのデータはデータソースから取得します。このモードでは、グリッド上のデータを変更すると元のデータソースのデータも変更されます。

 非連結モードでは、グリッドはグリッド独自のデータソースを扱うことができます。

 連結モードと非連結モードのどちらの場合も、C1FlexGrid内のデータに最も簡単にアクセスする方法が用意されています。グリッド内のデータにアクセスするには、行列番号を指定してアクセスします。インデクサは、それぞれ先頭の行列が「0」から始まる数字を使用します。 例えば、次のサンプルコードは、グリッドの最初の列に行番号を格納します。

Visual Basic
For r As Integer = C1FlexGrid1.Rows.Fixed To C1FlexGrid1.Rows.Count - 1
    C1FlexGrid1(r, 0) = r
Next
C#
for (int r = c1FlexGrid1.Rows.Fixed; r < c1FlexGrid1.Rows.Count; r++)
{
    c1FlexGrid1[r, 0] = r;
}
実行結果(ヘルプより抜粋)
実行結果(ヘルプより抜粋)

セルとセル範囲

 グリッドのセルは、キーボードやマウスでカーソルを移動し、グリッドが編集可能であればセルの内容を編集できます。また、グリッドがアクティブの間、カレントセルの周囲にはフォーカス長方形が表示されます。なお、VisualStyleプロパティを設定すると、カレントセルの位置の行および列ヘッダーがハイライト表示になり、カーソルの位置が分かりやすくなります。さらに、拡張セル選択もサポートしており、2つの対角(カレントセルと、セル選択セル)によってセルを範囲で操作できます。

カレントセル、セル範囲、選択状態のセル(ヘルプより抜粋)
カレントセル、セル範囲、選択状態のセル(ヘルプより抜粋)

セルのイメージ表示

 セルは、数値や文字列を格納することができることに加え、画像も表示することができます。

セルのフォーマット

 C1FlexGridコントロールのセルは、表計算ソフトのようにセルの内容に書式を設定することができます。あらかじめプリセットされている書式が使用でき、さらに独自の書式を設定することができます。書式の設定には、セルのFormat プロパティを使用します。プロパティには、書式内容を記号で設定します。さらに、条件付き書式設定も可能です。

書式設定内容と記号
記号 内容
Cまたはc Currency(通貨)。数値を地域ごとの通貨額を表す文字列に変換。
Eまたはe Exponential(指数)。数値を"-d.ddd E+ddd"または"-d.ddd e+ddd"という形式の文字列に変換。'd'はそれぞれ1桁の数(0~9)を表します。
Fまたはf Fixed-point(固定小数点)。数値を、固定の小数位を付けた浮動小数を表す文字列に変換。
Nまたはn Number(数値)。数値を、小数点の区切り記号と固定の小数位を付けた文字列に変換。
Pまたはp Percentage(百分率)。数値を百分率で表す文字列に変換。
d Short Date(短い日付)。
D Long Date(長い日付)。
t Short Time(短い時刻)。
T Long Time(長い時刻)。
d 現在の日付を1~31までの値で表示。1桁の日付(1~9)の場合は1桁で表示します。
dd 現在の日付を1~31までの値で表示。1桁の日付(1~9)の場合は前に0を付けて表示します(01~09)。
ddd 日付の略名を表示。
dddd 日付の名前を完全に表示。
M 現在の月を1~12までの値で表示。1桁の月(1~9)の場合は1桁で表示します。
MM 現在の月を1~12までの値で表示。1桁の月(1~9)の場合は前に0を付けて表示します。
MMM 月の略名を表示。
MMMMM 月の名前を完全に表示。
y 年を最大2桁の数値で表示。年の上2桁は省略されます。1桁の年(1~9)の場合は1桁で表示します。
yy 年を2桁の数値で表示。年の上2桁は省略されます。1桁の年(1~9)の場合は前に0を付けて表示します。
yyyy 年を完全な4桁の数値で表示。
/ 日付の区切り記号。
0 0プレースホルダ。書式設定文字列に'0'を指定した位置に数字がある場合、その数字が出力文字列にコピーされます。小数点より前で一番左にある'0'の位置と、小数点より後で一番右にある'0'の位置が、出力文字列に常に表示される数字の桁数を決定します。
# 桁プレースホルダ。書式設定文字列に'#'を指定した位置に数字がある場合、その数字が出力文字列にコピーされます。数字がない場合は、出力文字列のこの位置には何も表示されません。
. 小数点。書式設定文字列内の最初の'.'文字が、書式設定する値における小数点の区切り記号の位置を決定します。最初の'.'以外の'.'文字は無視されます。
, 桁区切り記号。小数点の区切り記号より、左の数値から3桁ごとに桁区切り記号が挿入されます。書式設定文字列の小数点のすぐ左に1つ以上の','文字がある場合、数値は','文字の数だけ1000を乗じた値で除算されて表示されます。
% 百分率プレースホルダ。'%'文字が書式設定文字列にあると、数値が100倍されてから書式設定されます。
; セクション区切り記号。';'文字は、書式設定文字内で正数、負数、および0のセクションを区切るのに使用します。

セルの外観

 セルの外観(配置、フォント、色、ボーダーなど)を自由に編集できます。 グリッドにはStylesプロパティがあり、このプロパティにグリッドの書式設定に使用するスタイルのコレクションが格納されています。このコレクションは、グリッド要素(固定セル、スクロール可能セル、セル範囲、フォーカスセルなど)の外観を定義する組み込みメンバを持っています。これらのスタイルを変更し、グリッドの外観を変更できます。また、独自のカスタムスタイルを作成し、セル、行、または列に設定することができます。

セルの背景色やデータの外観を変更可能(ヘルプより抜粋)
セルの背景色やデータの外観を変更可能(ヘルプより抜粋)

セルの編集

 デフォルトでは、固定行と固定列を除くすべてのセルが編集可能状態になっており、次の操作が行えます。

  • セルに直接入力。入力すると、セルの内容は入れ替わります。
  • [F2]キーまたは[Enter]キーを押す。すると、グリッドは編集モードになり、カレントセルの内容が編集できます。
  • セルをダブルクリック。これは[F2]キーを押した場合と同じことになりますが、クリックした場所の近くから編集が行えます。

 また、特定のセルの編集に制限をかけ、編集できないようにすることもできます。 さらに、セルの入力に値をドロップダウンリストから選択させることや、チェックボックス、ボタン、マスク文字列などを使うことができます。ボタンでは、イベントを利用してダイアログからデータをインプットさせるようなこともできます。 入力データの検証機能も備えており、入力値の正当性をチェックする機能を持たせることができます。

コントロールを使ったデータの入力が可能(ヘルプより抜粋)
コントロールを使ったデータの入力が可能(ヘルプより抜粋)

 その他、セルのマージやカスタムツリーの作成、小計行の作成機能などを持っています。

セルのマージ、やカスタムツリー作成、小計行の作成(ヘルプより抜粋)
セルのマージ、やカスタムツリー作成、小計行の作成(ヘルプより抜粋)

保存とロード、および印刷

 グリッドに入力された内容は、テキスト形式、Excel形式、XML形式で保存と読み込みを行うことができます。 印刷機能では、グリッドの内容をそのまま印刷したり、拡大縮小モード、印刷/印刷プレビューダイアログの表示、ヘッダやフッタの設定などを指定して印刷したりすることができます。

データのフィルタリング機能

 列にフィルタを設定することができ、フィルタ条件をユーザーが自由に選ぶことができます。列のAllowFilteringプロパティの値を変更することで、特定の列に対してフィルタリングの動作を無効にしたり、カスタマイズしたりできます。列のAllowFilteringプロパティに設定可能な値は以下のとおりです。

AllowFilteringプロパティの設定値
プロパティ 設定値
Default グリッドはColumnFilter型のフィルタを自動的に作成します。このフィルタは後述するValueFilterとConditionFilterを合わせたものです。
ByValue グリッドはValueFilter型のフィルタを自動的に作成します。このフィルタは、表示すべき値のリストを保持します。リスト上にない値は、エンドユーザーには表示されません。
ByCondition グリッドはConditionFilter型のフィルタを自動的に作成します。このフィルタでは、”指定の値より大きい”、”指定の値を含む”などといった条件を1つまたは2つ指定します。2つの条件を、AND、ORオペレータで結合することも可能です。
Custom グリッドはフィルタを自動的に作成しません。開発者が、フィルタのインスタンスを作成し、列のFilterプロパティに明示的に割り当てる必要があります。
None 列はフィルタリングされません。
ValueFilterの設定例(ヘルプより抜粋)
ValueFilterの設定例(ヘルプより抜粋)

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

バックナンバー

連載:ComponentZine(ComponentOne Studio)

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5