SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

SQL Serverのデータをグリッドで表示するWPFアプリケーションの作成 その2

ComponentOne Studio Enterprise 2011JのC1FlexGridコントロールを使ったWPFアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

GUIの作成

 これまで作成したウィンドウに、2つのCheckBoxコントロールを追加し、Checked/Uncheckedイベントハンドラを追加します。

 なお、C1FlexGridコンポーネントの概要については、『独自の入力グリッドを持ったWPFアプリケーションの作成』を参照ください。

GUIのデザインの修正
GUIのデザインの修正

セルのマージ

 C1FlexGridコントロールの優れている点は、多くの優秀な機能があらかじめコントロールに組み込まれており、メンバメソッドとプロパティを使ってこれらの機能を簡単に使うことができる点です。

 自分でコードを書くとなると、とても大変で膨大な作業量になってしまいますが、C1FlexGridコントロールではメンバメソッドやプロパティを呼び出す式を書くだけで済みます。グリッドのセルの結合(マージ)もあらかじめC1FlexGridコントロールに組み込まれており、この機能を使うかどうかと、どこのセルを結合するのかを指定するだけで、グリッド内のセルを自由に結合させることができます。

 使い方は簡単で、まずC1FlexGridコントロールの「AllowMerging」プロパティをTrueに設定し、グリッドレベルのセル結合機能を有効にします。設定値は「AllowMerging列挙体」のメンバで、以下の設定値を使用します。ここでは、セルを結合するので「Cells」を選びます。

AllowMerging列挙体
メンバ名 説明
None 結合しない
Cells スクロール可能なセルを結合
ColumnHeaders 列ヘッダーを結合
RowHeaders 行ヘッダーを結合
AllHeaders 列ヘッダーと行ヘッダーを結合
All すべての領域を結合

 Rows/Columnsプロパティで結合したいセルの方向を行列単位で指定します。そして、それらのセルの「AllowMerging」プロパティをTrueに設定すると、指定した行および列のセルを結合します。

 ここでは、同じカテゴリ名のセルを列単位で結合するため、Columnsプロパティに「CategoryName」を指定し、「AllowMerging」プロパティをTrueにします。カテゴリ名でグループ化していなければ、隣接する同じカテゴリ名のセルが結合されます。グループ化が実行されれば、そのまま同じカテゴリ名のセルが1つのセルに結合されます。セルの結合を解除する場合は、AllowMergingプロパティの値に「AllowMerging.None」を設定します。

セル結合前
セル結合前
カテゴリ名でグループ化していなければ、隣接する同じカテゴリ名のセルが結合される
カテゴリ名でグループ化していなければ、隣接する同じカテゴリ名のセルが結合される
グループ化が実行されれば、そのまま同じカテゴリ名のセルが1つのセルに結合される
グループ化が実行されれば、そのまま同じカテゴリ名のセルが結合される
Visual Basic
Private Sub CheckBox2_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles CheckBox2.Checked
    'セルのマージモードを設定
    C1FlexGrid1.AllowMerging = AllowMerging.Cells

    'カテゴリ名でセルを結合
    C1FlexGrid1.Columns("CategoryName").AllowMerging = True
    C1FlexGrid1.Columns("CategoryName").Foreground = New SolidColorBrush(Colors.MediumSeaGreen)
End Sub

Private Sub CheckBox2_Unchecked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles CheckBox2.Unchecked
    'セルの結合を解除
    C1FlexGrid1.AllowMerging = AllowMerging.None
    C1FlexGrid1.Columns("CategoryName").Foreground = New SolidColorBrush(Colors.Black)
End Sub
C#
private void checkBox2_Checked(object sender, RoutedEventArgs e)
{
    //セルのマージモードを設定
    C1FlexGrid1.AllowMerging = AllowMerging.Cells;

    //カテゴリ名でセルを結合
    C1FlexGrid1.Columns["CategoryName"].AllowMerging = true;
    C1FlexGrid1.Columns["CategoryName"].Foreground = new SolidColorBrush(Colors.MediumSeaGreen);
}

private void checkBox2_Unchecked(object sender, RoutedEventArgs e)
{
    //セルの結合を解除
    C1FlexGrid1.AllowMerging = AllowMerging.None;
    C1FlexGrid1.Columns["CategoryName"].Foreground = new SolidColorBrush(Colors.Black);
}

次のページ
グループ集計

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6385 2012/01/30 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング