TreeView

Q2
TreeViewを動的に作成する−2(上位オブジェクト名を検索)
[内容]
TreeViewを実行時の条件に合わせて作成したい

A2
[解決方法]
TreeItemクラスのhasChildItemsメソッドとgetChildItemsメソッドで、項目を追加したい
オブジェクトのリファレンスを取得します。
取得したリファレンスに対して、Appendメソッドを行うことで、実行時の条件に合った
ツリービューを作成することが出来ます。

  動的に作成したTreeItem名(文字列)を直接指定して、以下の下線部のような
  Appendメソッドを記述することは出来ません。

    var item1 = Form1.TreeView1.CreateItem("Item" + str(n));
    Form1.TreeView1.Append(item1);
    var item2 = Form1.TreeView1.CreateItem("Item" + str(n+1));
    Form1.TreeView1."Item"+str(n).Append(item2);



[サンプルコード]


下記の例は3階層のTreeItemをparamに指定された数ずつ追加します。
上位オブジェクトの名称を検索してリファレンスを求め、そのリファレンスにAppend
しています。
TreeView TreeView1 {
    :
    :
    /* オブジェクト名称からオブジェクトリファレンスを特定 */
    /* 引数:String findName オブジェクト名称             */
    /* 戻値:オブジェクトリファレンス(エラー時NULL)     */
    Function FindItem( findName ) {
        return _findItem( this, findName );
    }
    Function _findItem( parentItem, findName ) {
        if (parentItem.name == findName) return parentItem;
        if (parentItem.hasChildItems()) {
            var childItems = parentItem.getChildItems();
            for (var i in childItems) {
                var c = _findItem( childItems[i], findName );
                if ( c != null ) return c;
            }
        }
        return null;
    }
}
 

/* 以下の処理はイベントハンドラ等で行います。*/
/* 上位オブジェクトの名称から検索を行う方法*/

/* 1階層目 */
for (var i1 = 1; i1 <= param; i1++) {
    /* pItem:上位オブジェクト名、sItem:自オブジェクト */
    var pItem = "TreeView1";
    var sItem = i1 * 100;
    /* TreeItemを作成 */
    var item = Form1.TreeView1.CreateItem("Item" + str(sItem));
    /* 上位オブジェクトを検索し、そのリファレンスにAppend */
    Form1.TreeView1.FindItem(pItem).Append(item);

    /* 2階層目 */
    for (var i2 = 1; i2 <= param; i2++) {
        /* pItem:上位オブジェクト名、sItem:自オブジェクト */
        var pItem = "Item" + str(i1) + "00";
        var sItem = i1 * 100 + i2 * 10;
        /* TreeItemを作成 */
        var item = Form1.TreeView1.CreateItem("Item" + str(sItem));
        /* 上位オブジェクトを検索し、そのリファレンスにAppend */
        Form1.TreeView1.FindItem(pItem).Append(item);
 
        /* 3階層目 */
        for (var i3 = 1; i3 <= param; i3++) {
            /* pItem:上位オブジェクト名、sItem:自オブジェクト */
            var pItem = "Item" + str(i1) + str(i2) + "0";
            var sItem = i1 * 100 + i2 * 10 + i3;
            /* TreeItemを作成 */
            ar item = Form1.TreeView1.CreateItem("Item" + str(sItem));
            /* 上位オブジェクトを検索し、そのリファレンスにAppend */
            Form1.TreeView1.FindItem(pItem).Append(item); 
        }
    }
}
画面イメージ
画面イメージ
ウォッチビュー(オブジェクト)
ウォッチビュー(オブジェクト)


CRSファイル形式のサンプルを
  「上位オブジェクト名を利用したTreeView動的生成サンプル(Tre_002.zip)
よりご利用いただけます。

管理番号:Tre_002
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ