aardio 文档
aardio 范例: 树视图(treeview)控件 - 动态加载子项演示
//树视图(treeview)控件 - 动态加载子项演示
import win.ui;
/*DSG{{*/
var winform = win.form(text="树形控件动态加载子项演示";right=349;bottom=249)
winform.add(
button={cls="button";text="查找动态加载的子项";left=136;top=200;right=305;bottom=242;z=2};
treeview={cls="treeview";left=22;top=17;right=326;bottom=192;bgcolor=15793151;edge=1;vscroll=1;z=1}
)
/*}}*/
import fsys;
winform.treeview.onnotify = function(id,code,ptr){
if( code = 0xFFFFFE3A/*_TVN_ITEMEXPANDINGW*/){
var nmtv = winform.treeview.getNotifyMessage(code,ptr)
if(nmtv.action & 2/*_TVE_EXPAND*/) {
var tvi = winform.treeview.getItem(nmtv.itemNew.hItem)
if( ! winform.treeview.isExpandedOnce(nmtv.itemNew.hItem) ) {
var _,files = fsys.list("~\codes\范例程序\")
winform.treeview.insertItem( files,tvi.hItem)
}
}
}
/**
elseif( code == 0xFFFFFE3C/*_TVN_GETDISPINFOW*/){
var dispInfo = winform.treeview.getNotifyDispInfo(code,ptr)
if( dispInfo ? dispInfo.item ) {
if( ( dispInfo.item.mask & 0x40/*_TVIF_CHILDREN*/ ) ){
dispInfo.item.cChildren = 1;
raw.mixin(ptr,dispInfo);
}
}
}
**/
}
/**
如果cChildren指定为 -1/*_I_CHILDRENCALLBACK*/ 会调用_TVN_GETDISPINFOW获取节点数,
这种方式在节点数目太多时性能较差会出现卡顿现象,而且没有什么意义,
所以直接把cChildren指定为1就可以。
**/
winform.treeview.insertItem( {
text = "范例";
cChildren = 1; //指定节点有有一个或多个动态加载的子项,这里只要指定为1,指定为其他数目无意义
} )
winform.button.oncommand = function(id,event){
var hItem = winform.treeview.findPath("范例\HTMLayout")
if( hItem ) {
winform.treeview.setSelected(hItem);
winform.treeview.setItemText(hItem,"HTMLayout2")
}
}
winform.show()
win.loopMessage();
Markdown 格式