//树视图(treeview)控件 - 入门示例 import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=349;bottom=249;) winform.add( treeview={cls="treeview";left=22;top=17;right=326;bottom=230;asel=false;bgcolor=15793151;db=1;dl=1;dt=1;edge=1;hscroll=1;infoTip=1;vscroll=1;z=1} ) /*}}*/
import win.ui.menu;
//选中树视图(treeview)节点变更触发 onSelChanged 事件 winform.treeview.onSelChanged = function(hItem,data,nmTreeView){ var data = winform.treeview.getItemData(hItem);
if( data ) winform.text = tostring(data)
else winform.text = winform.treeview.getItemText(hItem);
}
//右键点击树视图(treeview)触发 onRightClick 事件 winform.treeview.onRightClick = function(hItem,data){ winform.treeview.setSelected(hItem);
var menu = win.ui.popmenu(winform)
menu.add("删除",
function(){
winform.treeview.delItem(hItem)
}
)
menu.popup(x,y,true);
}
//处理树视图(treeview)通知事件,实际上上面的 onSelChanged,onRightClick 都来自控件预处理的通知事件。 winform.treeview.onnotify = function(id,code,ptr){
if( code == 0xFFFFFFF4/*_NM_CUSTOMDRAW*/ ){ //来点自绘
var lvcd = winform.treeview.getNotifyCustomDraw(code,ptr);
if( lvcd.nmcd.dwDrawStage == 1/*_CDDS_PREPAINT*/ ){
return 0x20/*_CDRF_NOTIFYITEMDRAW*/;
}
elseif( lvcd.nmcd.dwDrawStage == 0x10001/*_CDDS_ITEMPREPAINT*/ ){
select(lvcd.iLevel) {
case 0{
if (lvcd.nmcd.uItemState == ( 0x10/*_CDIS_FOCUS*/ | 1/*_CDIS_SELECTED*/))
lvcd.clrText = gdi.RGB(255, 255, 255);
else
lvcd.clrText = gdi.RGB(0, 0, 255);
}
case 1 {
if (lvcd.nmcd.uItemState == ( 0x10/*_CDIS_FOCUS*/ | 1/*_CDIS_SELECTED*/))
lvcd.clrText = gdi.RGB(255, 255, 255);
else
lvcd.clrText = gdi.RGB(255, 0, 0);
}
}
lvcd.update()
return 0/*_CDRF_DODEFAULT*/
}
}
}
var hitem = winform.treeview.insertItem( text="程序目录" ); var hSubItem = winform.treeview.insertItem( { text="子目录" },hitem/*父节点*/);
var hitem = winform.treeview.insertItem( { text = "下面用一个数组指定子节点"; { { text = "子节点1" }; { text = "子节点2" }; { text = "下面用一个数组指定子节点"; { "a";"b";"c";{ text = "d" } } }; } } )
import string.xml;
xmlstr = /*
<?xml version="1.0" encoding="utf-8"?>
每个节点可以用数组包含子节点(但节点本身必须指定tagName或text属性) 也可以使用children成员指向一个数组表示多个子节点
可以参考 fsys.asar.reader 提供的treeData函数返回的数据表, 就可以直接在treeview中加载并显示。 */
winform.show() win.loopMessage();
Markdown 格式