|
グリッドコントロール (GridControl)
グリッドコントロールは、表形式のデータの表示、編集が行える強力なコントロールです。
グリッドコントロールの各列には様々な表示形式でデータを表現することが可能です。この表示形式の指定方法には大きく分けて、以下の2通りがあります。
スタイルを利用した表示形式
列を単位として表示形式を設定したい場合、こちらの方法が適しています。各列にあらかじめスタイルを定義しておくことにより行を増やしたときに自動的に各セルの表示形式が設定される方式です。一般的には、列ごとにデータの表示形式を分ける場合が多いので、通常はこちらの設定方法を推奨します。
各列ごとに表示形式を指定したイメージが以下となります。
各列ごとのスタイルを定義するには、以下の2つのメソッドを利用します。
一連のグリッド表示の流れは以下の通りです。
// スタイルを適用する列を用意
this.Cols = 10;
this.Rows = 0;
// AddStyleにより、スタイルの追加
this.AddStyle(
c("styleLabel" , "CellType:label"),
c("styleEdit" , "CellType:edit"),
c("styleMeter" , "CellType:meter"),
c("styleLamp" , "CellType:lamp"),
c("styleSwitch" , "CellType:switch"),
c("styleButton" , "CellType:button", "TextColor:@TextColor"),
c("styleSideButton", "CellType:sidebutton"),
c("styleCombo" , "CellType:combo", "ComboType:DROPDOWNLIST", "TextList:data1"+::RET()+"data2"+::RET()+"data3"),
c("styleImage" , "CellType:image", "File:" + "image.png"),
c("styleFill1" , "FillColor:#000000", "TextColor:@SelectColor"),
c("styleFill2" , "FillColor:#000000", "TextColor:#FFFFFF")
);
// 列ごとのスタイルを設定
this.SetDefaultStyle("col",
c(
"styleLabel, styleFill1",
"styleEdit, styleFill2",
"styleMeter, styleFill1",
"styleLamp, styleFill1",
"styleSwitch, styleFill1",
"styleButton",
"styleSideButton, styleFill2",
"styleCombo, styleFill2",
"styleImage",
"styleLabel, styleFill1"
)
);
// 行を追加
this.AddRow(10);
// 列の幅を設定
this.SetColWidth(0, c(70, 70, 100, 50, 50, 100, 100, 100, 80, 500));
// ヘッダのタイトル設定
this.SetRowData(-1, c("label", "edit", "meter", "lamp", "switch", "button", "sidebutton", "combo", "image"), F);
1)
|
スタイルを設定する列数(行数)を指定
SetDefaultStyleメソッドでスタイルを設定する列数(行数)をあらかじめ用意します。
例えば、列に対してスタイルを設定する場合、その列数をColsプロパティで指定します。またこの場合、スタイルは追加される行に対して適用されるため、Rowsプロパティは0を指定します。
|
2)
|
スタイルの定義
スタイルとは、あるセル範囲単位(行ごと、列ごとなど)でセルプロパティを事前に定義したものです。スタイルを定義するには、AddStyleメソッドを利用します。
this.AddStyle(
c("styleLabel" , "CellType:label"),
c("styleEdit" , "CellType:edit"),
c("styleMeter" , "CellType:meter"),
c("styleLamp" , "CellType:lamp"),
c("styleSwitch" , "CellType:switch"),
c("styleButton" , "CellType:button", "TextColor:@TextColor"),
c("styleSideButton", "CellType:sidebutton"),
c("styleCombo" , "CellType:combo", "ComboType:DROPDOWNLIST", "TextList:data1"+::RET()+"data2"+::RET()+"data3"),
c("styleImage" , "CellType:image", "File:" + "image.png"),
c("styleFill1" , "FillColor:#000000", "TextColor:@SelectColor"),
c("styleFill2" , "FillColor:#000000", "TextColor:#FFFFFF")
);
AddStyleメソッドでは、パラメータとしてスタイル定義配列を複数指定する事ができます。スタイル定義配列は以下の形式で指定します。
c(スタイル名(文字列), セルプロパティ(文字列))
|
|
3)
|
列ごと(行ごと)のスタイルを設定
ここでは、列ごと(行ごと)のスタイルを設定する方法を説明します。SetDefaultStyleメソッドを利用して、事前に定義していたスタイルを行ごとに設定します。
this.SetDefaultStyle("col",
c(
"styleLabel, styleFill1",
"styleEdit, styleFill2",
"styleMeter, styleFill1",
"styleLamp, styleFill1",
"styleSwitch, styleFill1",
"styleButton",
"styleSideButton, styleFill2",
"styleCombo, styleFill2",
"styleImage",
"styleLabel, styleFill1"
)
);
SetDefaultStyle メソッドでは、第2パラメータの配列に列ごとのスタイルを指定します。
c(1列目のスタイル名, 2列目のスタイル名, ...)
|
各列のスタイル名には、複数のスタイル名をカンマ区切りで指定が可能です。
|
セルのプロパティ(背景色、文字の色、文字の位置、点滅など)を設定する場合、予めセルタイプを設定する必要があります。SetDefaultStyleメソッドでスタイル名を指定する際は、各スタイルの先頭でCellTypeが指定されている必要があります。
例)
// スタイルの定義
this.AddStyle(
c("styleLabel" , "CellType:label"),
c("styleFill1" , "FillColor:#000000", "TextColor:@SelectColor")
);
// CellTypeの設定があるstyleLabelを先に指定する
this.SetDefaultStyle("col",c("styleLabel, styleFill1"));
// 以下はNG
this.SetDefaultStyle("col",c("styleFill1, styleLabel"));
|
|
|
SetDefaultStyleメソッドで複数のスタイル名をカンマ区切りで指定した場合、各スタイルで重複したセルプロパティの設定がある場合、後方が有効となります。例えば、以下の場合ではstyleLabelとstyleFill1両方でFillColorプロパティの指定がありますが、SetDefaultStyleメソッドでのスタイル名を指定する際、styleFill1が後方となるため「FillColor:#000000」が有効となります。
// スタイルの定義
this.AddStyle(
c("styleLabel" , "CellType:label", "FillColor:#C0C0C0"),
c("styleFill1" , "FillColor:#000000", "TextColor:@SelectColor")
);
// 複数のスタイルを指定
this.SetDefaultStyle("col",c("styleLabel, styleFill1"));
|
|
|
4)
|
行(列)を追加
AddRowメソッドで追加したい行数分追加します。
this.AddRow(10);
|
SetDefaultStyleメソッドで列ごとのスタイルが定義してある状態で行を追加すると、追加された行はスタイルが適用された状態となります。
Rowsプロパティ値を変更してもAddRowメソッドと同様の動作となります。
|
|
5)
|
列の幅を指定
SetColWidthメソッドで列ごとの幅を設定します。
this.SetColWidth(0, c(70, 70, 100, 50, 50, 100, 100, 100, 80, 500));
|
6)
|
ヘッダ、および各セルへデータを設定
SetData / SetTableData / SetColData / SetRowData でヘッダ、および各セルへデータを設定します。
this.SetRowData(-1, c("label", "edit", "meter", "lamp", "switch", "button", "sidebutton", "combo", "image"), F);
|
ヘッダ、および各セルへデータを設定するデータは、CellTypeごとに設定データが異なります。詳しくはSetDataメソッドを参照下さい。
|
|
|
前述の説明ではスタイルの設定は列ごとに行いましたが、行ごと(もしくは全体)にスタイルを設定することも可能です。
|
セルプロパティを直接指定する方法
セル(一つのマス目)単位に表示形式を設定したい場合、こちらの方法が適しています。
セルごとに表示形式を指定したイメージが以下となります。
一連のグリッド表示の流れは以下の通りです。
this.Rows = 10;
this.Cols = 5;
this.SetCellProperty( "all",c("CellType:label", "FillColor:#FFFFFF", "TextAlignX:RIGHT"));
this.SetCellProperty( "cell",c("CellType:lamp", "Shape:CIRCLE", "OnColor:#FF0000", "OffColor:#00FF00"),3,1);
// 列の幅を設定
this.SetColWidth(0, c(110, 110, 22, 110, 110));
// ヘッダのタイトル設定
this.SetTableData(
c("機器1",
c("", "55:35:20", 95, "", "3回", F)),
0,
0,
F
);
1)
|
表示するグリッド数(行数、列数)を指定
以下は、10行5列の表を作成します。
this.Rows = 10;
this.Cols = 5;
|
2)
|
セルプロパティを設定
SetCellProperty メソッドでセルのプロパティを設定します。SetCellProperty メソッドの第1パラメータで "all"(全て) / "col"(列) / "row"(行) / "cell"(セル) / "range"(範囲) を指定し、その範囲に適用するセルプロパティを設定します。
this.SetCellProperty( "all",c("CellType:label", "FillColor:#FFFFFF", "TextAlignX:RIGHT"));
this.SetCellProperty( "cell",c("CellType:lamp", "Shape:CIRCLE", "OnColor:#FF0000", "OffColor:#00FF00"),3,1);
|
3)
|
列の幅を指定
SetColWidthメソッドで列ごとの幅を設定します。スタイルの場合と同様で設定します。
|
4)
|
ヘッダ、および各セルへデータを設定
SetData / SetTableData / SetColData / SetRowData でヘッダ、および各セルへデータを設定します。スタイルの場合と同様で設定します。
|
|
個別にプロパティを指定する表示形式では、セルプロパティを設定後に新たに行、および列を追加した場合の追加セルはセルプロパティが設定されていない状態です。その為、追加セルに対して新たにセルプロパティを設定する必要があります。
|
キー操作
グリッドコントロール上で使用できるキー操作は以下のとおりです。尚、カットキー(Ctrl+X)、貼り付けキー(Ctrl+V)、DELキーはそれぞれEnableCutKey/EnablePasteKey/EnableDelKeyで無効にすることができます。
|
|
Ctrl+C
|
選択している範囲をコピーする。
|
Ctrl+X
|
選択している範囲をカットする。
|
Ctrl+P
|
現在のカーソル位置に貼り付けする。
|
DEL
|
選択している範囲のデータをクリアする。
|
Enter
|
エディットを開始する(セルタイプがエディットボックスの場合のみ)。エディットを終了するときは再びEnterキーを押します。
|
F2
|
Enterキーと同様にエディットを開始する。(セルタイプがエディットボックスの場合のみ。)
|
Space
|
スイッチの値を切り替える(セルタイプがスイッチの場合のみ)。
|
↑
|
カーソルを下に移動する。
|
↓
|
画像ファイルを表示するとき使用します。
|
←
|
カーソルを左に移動する。
|
→
|
カーソルを右に移動する。
|
Shift + ↑
|
選択範囲を上に広げる。
|
Shift + ↓
|
選択範囲を下に広げる。
|
Shift + ←
|
選択範囲を左に広げる。
|
Shift + →
|
選択範囲を右に広げる。
|
マウスホイール操作
グリッドコントロールはマウスホイール(上下スクロール)に対応しています。
セルのインデックス
例えばSetDataメソッドでは、以下のように列(Col)と行(Row)の位置を指定します。この位置のことをインデックスと言います。
SetData (Col, Row, Data)
セルのインデックスは0から始まります。ヘッダ部のインデックスは-1からマイナス方向に順番に割り振られています。下図はインデックスを(Col, Row)でグリッド内に表示した状態です。
|