romさん
サンプルソース作成したので、合わせて確認してみてください。
Code:
||++ TreeNode拡張
||++ TreeNodeに階層フィールドを追加
{define-class public ExTreeNode {inherits DefaultTreeNode}
field public node-level:int {constructor public {default
...
}
{construct-super
{splice ...}
}
}
}||++ TreeControl生成
{TreeControl
data-model =
{TreeModel
root =
{ExTreeNode node-data="Food",
{ExTreeNode node-data="Fruit",
{ExTreeNode node-data="Apples",
{ExTreeNode node-data="Macintosh"},
{ExTreeNode node-data="Cortland"},
{ExTreeNode node-data="Gala"},
{ExTreeNode node-data="Delicious"}
},
{ExTreeNode node-data="Oranges"}
},
{ExTreeNode node-data="Vegetables",
{ExTreeNode node-data="Squash"},
{ExTreeNode node-data="Tomatoes"},
{ExTreeNode node-data="Cucumbers"}
}
}
}, ||++ tree-item-creation-procに階層値を設定
tree-item-creation-proc ={proc {node:TreeNode}:TreeItem
{type-switch node
case et:ExTreeNode do
{if et.parent == null then
set et.node-level = 1
else
def par = et.parent
{type-switch et.parent
case etp:ExTreeNode do
set et.node-level = etp.node-level+1
}
}
}
{return {DefaultTreeItem node}}
}, ||++ アクションイベント
{on Action at tc:TreeControl do
{type-switch tc.current-node
case et:ExTreeNode do
{popup-message et.node-level&"階層です。"}
}
}
}