階層構造をもつ配列オブジェクトの操作

階層化されたオブジェクトを配列として生成することができます。


Form frm {
    width = 800;
    height = 600;
    Form fArray[3] {
        x = 10;
        y = 10;
        width = 190;
        height = 100;
        border = true;
        layoutSpacing = 2;
        Button btn {
            x = 10;
            y = 10;
            width = 170;
            height = 30;
            title = "button";
        }
        Button btnArray[3] {
            x = 10;
            y = 50;
            width = 50;
            height = 30;
            layout = LAYOUT_HORIZONTAL;
            layoutSpacing = 10;
            title &= str(index + 1) + "番";
        }
    }
}
../../_images/array05_image001.png

このような構造をもつ配列に対しても、insert、deleteメソッドにより、配列要素の操作を行うことができます。


frm.fArray[1].Delete();

を実行した結果の表示

../../_images/array05_image002.png

frm.fArray[1].btnArray[2].delete();
frm.fArray[0].btnArray.insert(1);

を実行した結果の表示

../../_images/array05_image003.png

配列化されたオブジェクトからGETメソッドにより、配列要素に対して別のCRSスクリプトをロードして実行することができます。


Form frm {
    width = 800;
    height = 600;
    Form fArray[3] {
        x = 10;
        y = 10;
        width = 190;
        height = 90;
        border = true;
        layoutSpacing = 2;
    }
    fArray[0].get("frm1.crs");
    fArray[1].get("frm2.crs");
    fArray[2].get("frm3.crs");
}
../../_images/array05_image004.png

この例の場合、frm.fArrayは配列オブジェクトとなりますが、 個別にロードされたCRSスクリプトに定義されているチェックボックスやボタンはfrm.fArrayの配列とは関連せず、 個々の配列要素のオブジェクトツリーに接続される事に注意してください。

従って、frm.fArray.insert()を実行しても、fArrayの新しい要素には何もオブジェクトは表示されません。