cAlgo API リファレンス

Grid【cAlgoAPI】

2021年3月5日

格子状に配置する

パネルシリーズの最後はGridです。なんでこれが最後なのかというとめんどくさかったから。さほど使わないわりに、こいつだけプロパティとかメソッドとか追加されてたり、専用の型たくさん使ってたり面倒なんですよ。

 

Grid クラス

格子状のコントロール配置パネルです。子要素側で位置指定する他のPanelとは異なり、配置時に座標指定する形になりますので注意が必要です。

public class Grid : Panel

 

プロパティ
(IReadOnlyList<GridColumn>) Columns

Gridの列全体を取得します。

(IReadOnlyList<GridRow>) Rows

Gridの行全体を取得します。

(bool) ShowGridLines {get; set;}

グリッドの区切りラインを表示するかを設定、取得します。(主にレイアウト調整時に使用)

Panel,ControlBaeのプロパティすべて

 

コンストラクタ

コントロールにしては珍しく引数付きコンストラクタを持ちます。

Grid(int rowsCount, int columnsCount)

行数rowsCountと列数columnsCountを指定してGridを作成します。

 

メソッド
(void) AddChild(ControlBase child, int row, int column, [int rowSpan, int columnSpan])

子要素を追加する際にどこに配置するか行番号rowと列番号columnを指定します。複数行、列にまたがる場合はrowSpan, columnSpanを指定します。

(GridColumn) AddColumn()

Gridに列を追加し、追加した列を返します。

(void) AddColumns(int count)

Gridに複数列を一気に追加します。

(GridRow) AddRow()

Gridに行を追加し、追加した行を返します。

(void) AddRows(int count)

Gridに複数行を一気に追加します。

(void) RemoveColnmnAt(int index)

Gridから指定されたindexの列を削除します。

(void) RemoveRowAt(int index)

Gridから指定されたindexの列を削除します。

 

 

GridRowインターフェイス

Gridの一行を示すオブジェクトを表します。

public interface GridRow

 

プロパティ
(GridLength) Height

行の高さをGridLength型で取得します。ここに直接代入(Set)はできません

(int) Index

行番号を取得します。番号は0始まりで振られます。

(double) MaxHeight {get; set;}

最大行高さをピクセルで取得、設定します。

(double) MinHeight {get; set;}

最小行高さをピクセルで取得、設定します。

 

メソッド
(void) SetHeightInPixels(doulbe pixels)

行高さをピクセルで指定して、設定します。具体的にはHeightプロパティの内容をUnitType=Pixel、Size=pixelsに設定します。

(void) SetHeightInStars(doulbe stars)

行高さを倍率で指定して設定します。例えばSetHightInStart(2)とすると、その行は他の行の2倍の高さになります。Heightプロパティの内容をUnitType=Star、Size=starsに設定します。

(void) SetHeightIToAuto()

行高さを自動設定にします。Heightプロパティの内容をUnitType=Auto、Size=0に設定します。配置されるコントロールの大きさに合わせて自動調整されます。

 

 

(2021/7/19 メソッド名誤り修正)

GridColumnインターフェイス

Gridの一列を示すオブジェクトを表します。

public interface GridColumn

 

プロパティ
(GridLength) Width

列の幅をGridLength型で取得します。ここに直接代入(Set)はできません

(int) Index

列番号を取得します。番号は0始まりで振られます。

(double) MaxWidth {get; set;}

最大列幅をピクセルで取得、設定します。

(double) MinWidth {get; set;}

最小列幅をピクセルで取得、設定します。

 

メソッド
(void) SetWidthInPixels(doulbe pixels)

列幅をピクセルで指定して、設定します。具体的にはWidthプロパティの内容をUnitType=Pixel、Size=pixelsに設定します。

(void) SetWidthInStars(doulbe stars)

列幅を倍率で指定して設定します。例えばSetHightInStart(2)とすると、その列は他の列の2倍の幅になります。Widthプロパティの内容をUnitType=Star、Size=starsに設定します。

(void) SetWidthToAuto()

列幅を自動設定にします。Widthプロパティの内容をUnitType=Auto、Size=0に設定します。配置されるコントロールの大きさに合わせて自動調整されます。

 

サンプルコード

ただただボタンを並べるだけのコードです。

int ROW = 10;
int COL = 6;

// ボタンたくさん作る
_buttons = new Button[ROW*COL];
for (int i = 0; i < _buttons.Length; i++) {
    _buttons[i] = new Button {
        Text = (i + 1).ToString(),
        Height = 20,
        Width = 70,
    };
}

// grid作って配置
var grid = new Grid(ROW, COL);
grid.ShowGridLines = true;
for(int i=0; i<ROW; i++) {
    for(int j=0; j<COL; j++) {
        // 配置時にgrid上の座標を指定
        grid.AddChild(_buttons[i + j * ROW],i,j);
    }
}
Chart.AddControl(grid);

//いろいろ試してみる
// 2行目の高さを他の2倍に
grid.Rows[1].SetHeightInStars(2);
// 5行目は自動設定
grid.Rows[4].SetHeightToAuto();
// 3列目は50ピクセル幅に(ボタンサイズより小さい値)
grid.Columns[2].SetWidthInPixels(50);

こんな見た目です。(文字は後から追記してます)

なんとなくSetHeight、SetWidthの感覚伝わりますか?興味ある方はコードをコピペしていじってみてください。

 

 

関連する型

GridLengthクラス

行や列のサイズを表すためのクラスです。

public class GridLength : Object

 

プロパティ
(GridUnitType) UnitType

サイズがどのような形式で表されてるのかを取得します。

(double) Value

サイズの数値を取得します。例えばUnitTypeがPixelでValueが100なら行高さや列幅は100ピクセルです。UnitTypeがStarでValueが2なら高さや幅は2行分(列分)です。UnitTypeがAutoならValueは0で高さや幅は自動調整されます。

 

 

GridUnitType列挙型

GridLengthで高さや幅の表現方法を表します。

Pixel ピクセル
Star 倍率(他の行や列の何倍か)
Auto 自動調整

-cAlgo API リファレンス

© 2021 cTrader's Life Powered by AFFINGER5