aardio 文档

aardio 范例: 列表视图(listview)控件 - 响应事件

//列表视图(listview)控件 - 响应事件
import win.ui;
import win.ui.menu;
/*DSG{{*/
var winform = win.form(text="aardio form";right=507;bottom=352)
winform.add(
listview={cls="listview";left=16;top=38;right=476;bottom=319;acceptfiles=1;asel=false;bgcolor=0xFFFFFF;dl=1;dr=1;edge=1;fullRow=1;gridLines=1;msel=false;z=1};
static={cls="static";text="请使用鼠标左键、鼠标右键点击列表项";left=17;top=9;right=290;bottom=27;transparent=1;z=2}
)
/*}}*/

winform.listview.columns = [
    ["列标题1",100/*列宽*/,0/*_LVCFMT_LEFT*/],
    ["复选框",100,2/*_LVCFMT_CENTER*/],//第二列开始可以使用_LVCFMT_CENTER居中
    ["标题",-1/*自适应宽度*/],//自适应列宽度更简单的方法是将列宽度指定为 -1 就可以了
]

/**
winform.listview.adjust = function(cx,cy){
    //在控件改变大小时调整自适应列,如果列宽度已经指定为 -1 则已自动具有此功能(不必再添加这段代码)
    winform.listview.fillParent(/*列序号*/);
} 
**/

winform.listview.addItem( { 
    text={"第一行内容";"☑"} 
} ) 
winform.listview.addItem("第二行内容")
winform.listview.addItem(["第三行内容","⬛"]) 

winform.listview.setItemText("改变第三行",3)
winform.listview.setItemText( {
    "改变第二行";"⬛"
},2);


//listview 单击事件
winform.listview.onClick = function(item,subItem,nmListView){ 
    if(subItem==2){
        var text = winform.listview.getItemText(item,subItem);  
        winform.listview.setItemText(text=="⬛" ? "☑" :"⬛",item,subItem);
    }
}

//listview 双击事件
winform.listview.onDoubleClick = function(item,subItem,nmListView){

}

//选中项变更事件
winform.listview.onSelChanged = function(selected,item,subItem,nmListView){

}

//当前焦点项变更时触发此事件
winform.listview.onFocusedChanged = function(item,subItem,nmListView){
    winform.static.text = "选中了" +  winform.listview.getItemText(item,subItem) 
}

//右键点击列表项触发此事件
winform.listview.onRightClick = function(item,subItem,nmListView){
    winform.popmenu.popup();//弹出菜单
}

//创建弹出菜单
winform.popmenu = win.ui.popmenu(winform);
winform.popmenu.add('删除',function(id){
    //在下面输入菜单响应代码
    winform.listview.delItem( winform.listview.selIndex )
});

//listview 控件窗口消息回调:接受拖放文件并修改指定列
winform.listview.wndproc = function(hwnd,message,wParam,lParam){
    select(message) { 
        case 0x233/*_WM_DROPFILES*/{ 
            var path = win.getDropFile(wParam )[1];  
            var row,col = winform.listview.hitTest();

            if( row ) winform.listview.setItemText(path,row,col);
        } 
    }
}

// listview  响应通知,在窗体设计器双击 listview 控件自动添加下面的代码 
winform.listview.onnotify = function(id,code,ptr){ 
    select(code) {
        case 0xFFFFFF94/*_LVN_COLUMNCLICK*/ {
            var nm = winform.listview.getNotifyMessage(code,ptr)

            var desc = winform.listview.getColumnImage(nm.iSubItem) == 0; 
            winform.static.text = "请参考 win.ui.grid 源码处理排序" 
        } 
    } 
}

/*
winform.listview.onnotify 的 code 参数:

_LVN_BEGINDRAG 鼠标左键正在被触发以便进行拖放操作(当鼠标左键开始拖拽列表视图控件中的项目时产生)
_LVN_BEGINRDRAG 鼠标右键正在被触发以便进行拖放操作(当鼠标右键开始拖拽列表视图控件中的项目时产生)
_LVN_BEGINLABELEDIT 开始编辑项的文本
_LVN_COLUMNCLICK 单击列(当鼠标单击列表视图控件列标题时产生)
_NM_CLICK 当鼠标单击列表视图控件时产生
_LVN_COLUMNCLICK 单击列
_LVN_DELETEALLITEMS 删除所有项
_LVN_DELETEITEM 删除某个项
_NM_DBLCLK 当鼠标双击列表视图控件时产生
_LVN_ENDLABELEDIT 结束对项文本的编辑
_LVN_GETDISPINFO 请求需要显示的信息
_LVN_GETINFOTIP 请求显示在工具提示窗口内的附加的文本信息
_LVN_HOTTRACK 鼠标滑过某个项
_LVN_INSERTITEM 当向列表视图控件插入项目时产生
_LVN_ITEMACTIVATE 激活某个项
_LVN_ITEMCHANGED 某个项已经发生变化
_LVN_ITEMCHANGING 某个项目正在发生变化
_NM_KILLFOCUS 当视表列图控件失去焦点时产生
_LVN_KEYDOWN 某个键被按下
_LVN_MARQUEEBEGIN 开始某个边框选择
_NM_OUTOFMEMORY 当内存溢出时产生
_LVN_ODCACHEHINT 虚拟列表控件的显示区域的内容发生了变化
_LVN_ODSTATECHANGED 虚拟列表的控件的某个项或某个范围内的项已经发生变化
_LVN_ODFINDITEM 需要拥有者查找一个特定的回调项
_NM_RCLICK 当鼠标右键单击列表视图控件时产生
_NM_RDBLCLK 当鼠标右键双击列表视图控件时产生
_NM_SETFOCUS 当列表视图控件获得焦点时产生
_LVN_SETDISPINFO 父窗口必须更新控件为项所维护的信
*/

winform.show(); 
win.loopMessage();
Markdown 格式