ヘッダセクションの作成
ヘッダセクションには、明細書に必要な顧客情報や受注番号、受注年月日を表示するためのセルを配置します。「お買い上げ明細書」と表示したLabelCellだけ、Borderプロパティを「3D罫線」に設定します。
また、郵便番号を入力するセルだけはマスク型セル(MaskedTextBoxCell)を使用し、Maskプロパティを「郵便番号」に設定しています。
ヘッダセクションは、背景をグラデーションに塗りつぶします。これは、ColumnHeaderSectionオブジェクトの次のプロパティを設定します。
プロパティ | 設定値 |
---|---|
GradientColors | [192, 255, 255]; White |
GradientDirection | Side |
GradientStyle | Vertical |
また、ヘッダ内のセルが入力可能になるように、次のプロパティを設定します。
プロパティ | 設定値 |
---|---|
ReadOnly | False |
Selectable | True |
フッタセクションの作成
ヘッダセクションができたら、今度はフッタセクションを作成します。ここは、入力された金額の合計を集計し、送料と請求金額を入力するエリアにします。
まず、Visual Studioのメニューから[テンプレート]-[追加]-[列フッタ]を選択します。グリッドにColumnFooterSectionオブジェクトが追加され、列フッタを作成できるようになります。ここには下記の4つのセルを配置します。
- ラベル型セル(LabelCell)
- サマリ型セル(SummaryCell)
- マスク型セル(MaskedTextBoxCell)
- コンボボックス型セル(ComboBoxCell)
サマリ型セル(SummaryCell)の設定
サマリ型セル(SummaryCell)は、セルの値の集計と結果の表示を提供します。SummaryCellを使用すると、コードを記述せずに計算式を定義でき、次の各計算をプロパティの設定だけで行わせることができます。ただし、集計できるのは列セルだけで、ヘッダやフッタに配置したセルは集計の対象にはできません。
- 任意の列(セル)の集計
- 合計 (Sum)
- 平均 (Average)
- 最小値 (Min)
- 最大値 (Max)
- 値の個数 (Count)
- 演算子による計算:+、-、*、/、丸括弧()
- 非表示行を集計するかどうかの指定
- ユーザー定義の計算式
SUM、Averageなどはあらかじめ計算式がコンポーネントに組み込まれていますので、計算したいセルをプロパティで指定するだけです。演算子による計算式を組み込む場合は、直接指揮をプロパティに設定します。
このプログラムでは、Rowセクションに配置したサマリ型セルでは計算式による計算を、フッタに配置したサマリ型セルではSumによる合計計算を自動的に行うように設定します。
では、最初にRowセクションに配置したサマリ型セル(SummaryCell1)に、単価と個数から自動的に合計金額を算出する設定を組み込みます。
- Rowセクションに配置したSummaryCell1を選択し、プロパティウィンドウでCalculationプロパティのドロップダウンリストから「Expression」を選択する。
- Calculationプロパティの左にある[+(プラスマーク)]をクリックしてプロパティを展開し、ExpressionStringに次の式を設定する。
=NumericUpDownCell1*NumericUpDownCell2
次に、フッタに配置したサマリ型セル(SummaryCell2)に「合計金額」の列の合計を集計するように設定します。
- フッタに配置したSummaryCell2を選択し、プロパティウィンドウでStyleプロパティを展開して、Formatプロパティを「
"\"###,##
」と設定する。 - Calculationプロパティのドロップダウンリストから「MathStatistics」を選択する。
- Calculationプロパティの右にある[+(プラスマーク)]をクリックし、MathStatisticsオブジェクトのプロパティを展開して、StatisticsTypeプロパティを「Sum」に設定する。
- CellNameプロパティで、集計対象のセルを「SummaryCell1」に設定する。
これで、SummaryCell1セルで計算された合計金額が次々と、サマリ型セル(SummaryCell2)で合計され表示されていきます。Formatプロパティを「"\"###,##
」と設定しているので、集計された金額は「\210,000」というように書式が整えられて表示されます。
なお今回、「"\"###,##
」という書式を使用しているので、セルに値がない場合に"\"
のみが出力されます。そのため、最初のサマリ型セル(SummaryCell1)のFormatプロパティには何も設定しないでください。設定してしまうと、計算結果が文字列になってしまい、SummaryCell2で合計計算ができなくなってしまいます。なお、「"\"###,##
」のかわりに.NET Frameworkの通貨書式「c」を使うと、この現象を回避できます。
コンボボックス型セル(ComboBoxCell)の設定
コンボボックス型セル(ComboBoxCell)は、.NET FrameworkのComboBoxコントロール(System.Windows.Forms.ComboBox)と同等の機能を持ったセルで、ユーザーはドロップダウンリストから値を入力できるようになります。
ここでは、3種類の送料をリストから選べるように、「Items」プロパティのコレクションエディタで次のようにリスト項目を設定します。
\0
\500
\1000
また、「DropDownStyle」を「DropDown」にすると、セルの計上が3Dボタン型からフラットなリストボックススタイルに変わります。
マスク型セル(MaskedTextBoxCell)の設定
このセルでは、最終的な請求金額を入力するようにするため、Maskプロパティに「\\##########
」と設定しておきます。また、このフッタセクションも背景色にグラデーションを設定し、フッタ内のセルが入力可能になるように、次のプロパティを設定します。
プロパティ | 設定値 |
---|---|
GradientColors | [192, 255, 255]; White |
GradientDirection | Side |
GradientStyle | Vertical |
ReadOnly | False |
Selectable | True |
以上で、グリッドのデザインが完成です。[ビルド]-[リビルド]メニューを実行し、デザイナでの修正をフォームのGcMultiRowコンポーネントに反映させます。