最近在用aardio设计一个自用的flex布局工具,需要利用treeview树型框来实现,思路是以树型框来对应HTML中的元素树,然后设置树型框中的节点关联数据,再遍历树型框节点,变成HTML,这样就得到了想要的东西.
为什么不直接用HTML文本来编辑呢?因为用英文来编辑需要在头脑里翻译成中文,在对英文已经有所遗忘或不熟悉的情况下,经常会想不起某些属性的英文单词的含义和用法,影响心情,效率低下,自己做一个中文的工具出来,就可以很好地解这些问题,从而提高了工作效率.
演示源码如下:
import win.ui;
/*DSG{{*/
var winform = win.form(text="简码编程jianma123.com";right=759;bottom=469)
winform.add(
["button_取节点文本"]={cls="button";text="取节点文本";left=565;top=398;right=665;bottom=432;z=5};
["button_获取关联数据"]={cls="button";text="获取关联数据";left=454;top=398;right=554;bottom=432;z=4};
["button_设置关联数据"]={cls="button";text="设置关联数据";left=342;top=398;right=442;bottom=432;z=3};
editLog={cls="edit";left=273;top=10;right=752;bottom=380;edge=1;hscroll=1;multiline=1;vscroll=1;z=2};
treeview={cls="treeview";left=8;top=10;right=269;bottom=383;bgcolor=16777215;edge=1;singleExpand=false;z=1}
)
/*}}*/
import web.json;
import win.ui.menu;
winform.treeview.onnotify = function(id,code,ptr){
if( code == 0xFFFFFE3D/*_TVN_SELCHANGEDW*/ ){ //改变选项
var hItem = winform.treeview.getSelection();
if(hItem){
var data = winform.treeview.getItemData(hItem);
if(data){
//winform.text = tostring(data)
winform.editLog.print("改变选项,有关联数据,data:",data,winform.treeview.getItemText(hItem))
}else {
//winform.text = winform.treeview.getItemText(hItem);
winform.editLog.print("改变选项,无关联数据,取节点文本:",winform.treeview.getItemText(hItem))
}
}
}elseif(code = 0xFFFFFFFB/*_NM_RCLICK*/){ //鼠标右键单击
var hItem,tvht = winform.treeview.hitTest();
winform.treeview.setSelected(hItem);
var menu = win.ui.popmenu(winform)
menu.add("删除",
function(){
winform.treeview.delItem(hItem)
}
)
menu.popup(x,y,true);
}
}
var hitem = winform.treeview.insertItem( text="程序目录";_customItemData={"aaa";"bbbb";}; );
var hSubItem = winform.treeview.insertItem( { text="子目录" },hitem/*父节点*/);
var hitem = winform.treeview.insertItem( {
text = "下面用一个数组指定子节点"; {
{ text = "子节点1" };
{ text = "子节点2" };
{ text = "下面用一个数组指定子节点"; {
"a";"b";"c";{ text = "d" }
}
};
}
} )
winform.button_设置关联数据.oncommand = function(id,event){
var hItem = winform.treeview.getSelection();
if(hItem){
var userDataTab = {name="zhangShan";age="22";}
winform.treeview.setItemData(hItem,userDataTab);
winform.editLog.print("设置关联数据:",hItem)
}
}
winform.button_获取关联数据.oncommand = function(id,event){
var hItem = winform.treeview.getSelection();
if(hItem){
var data = winform.treeview.getItemData(hItem);
if(data){
winform.editLog.print("获取关联数据:",hItem,data)
}
}
}
winform.button_取节点文本.oncommand = function(id,event){
var hItem = winform.treeview.getSelection();
if(hItem){
winform.editLog.print("取节点文本:",winform.treeview.getItemText(hItem))
}
}
winform.treeview.expandAll();//全部展开
winform.show();
win.loopMessage();