【第十一章 11.5】列表视图控件Listview -- 响应事件
图片
代码;
// 导入 win.ui 库,用于创建图形界面 import win.ui; // 导入 win.ui.menu 库,用于处理菜单 import win.ui.menu; /*DSG{{*/ // 创建一个名为 winform 的窗口对象,并设置其属性 var winform = win.form(text="aardio form";right=507;bottom=422;parent=...) // 向窗口中添加控件 winform.add( // 添加一个列表视图控件,并设置其属性 listview={cls="listview";left=16;top=38;right=476;bottom=319;acceptfiles=1;asel=false;bgcolor=16777215;dl=1;dr=1;edge=1;font=LOGFONT(name='SimSun');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.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 ) }); // 处理列表视图的窗口过程,处理拖放文件事件 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); } } } // 自适应列宽度 winform.listview.adjust = function(cx,cy){ // 使列表视图填充父窗口的指定列 winform.listview.fillParent(/*列序号*/); } // 向列表视图插入列 winform.listview.insertColumn("列标题2",100,,0/*_LVCFMT_LEFT*/) winform.listview.insertColumn("列标题1",100,,0/*_LVCFMT_LEFT*/) // 第二列开始可以使用_LVCFMT_CENTER居中 // 向列表视图添加行数据 winform.listview.addItem( { text={"第一行内容";"yes"} } ) winform.listview.addItem("第二行内容") winform.listview.addItem("第三行内容") // 设置列表视图指定行的文本 winform.listview.setItemText("改变第三行",3) winform.listview.setItemText( { "改变第二行";"第二列" },2); // 响应通知,当双击列表视图控件时 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();
相关回复
-
暂无评论!