实际上我们在文件夹里浏览文件时用的就是列表视图listview。它可以按图标、列表、详细信息等方式显示文件内容。但在桌面软件开发中,最常用的就是用它来做数据表格。新手要掌握的就是如何添加列、添加行的各列数据、读取行的指定列数据,如下面例子所示:

import win.ui;
/*DSG{{*/
var winform = win.form(text="简码编程 jianma123.com";right=759;bottom=469)
winform.add(
edit={cls="edit";text="edit";left=23;top=354;right=692;bottom=440;edge=1;multiline=1;z=2};
listview={cls="listview";left=21;top=23;right=691;bottom=340;edge=1;fullRow=1;gridLines=1;z=1}
)
/*}}*/
//自适应列宽度
winform.listview.adjust = function(cx,cy){
winform.listview.fillParent(/*列序号*/);
}
//添加列名
winform.listview.insertColumn("序号",50,,0x0/*_LVCFMT_LEFT*/)
winform.listview.insertColumn("QQ号",100,,0x0/*_LVCFMT_LEFT*/)
winform.listview.insertColumn("昵称",100,,0x0/*_LVCFMT_LEFT*/)
winform.listview.insertColumn("性别",100,,0x0/*_LVCFMT_LEFT*/)
winform.listview.insertColumn("等级",100,,0x0/*_LVCFMT_LEFT*/)
winform.listview.insertColumn("Q龄",100,,0x0/*_LVCFMT_LEFT*/)
winform.listview.insertColumn("所在地",100,,0x0/*_LVCFMT_LEFT*/)
//添加各行
winform.listview.addItem( {text={"1";"3424399322";"简码编程";"男";"20";"5";"广州";}} )
winform.listview.addItem( {text={"2";"10000";"马化腾";"男";"30";"10";"深圳";}} )
winform.listview.addItem( {text={"3";"10001";"张三";"男";"25";"8";"上海";}} )
winform.listview.addItem( {text={"4";"10002";"李四";"女";"40";"6";"北京";}} )
winform.listview.addItem( {text={"5";"10003";"王五";"男";"35";"4";"杭州";}} )
winform.listview.addItem( {text={"6";"10004";"赵六";"男";"26";"3";"天津";}} )
winform.listview.addItem( {text={"7";"10005";"陈七";"女";"47";"2";"重庆";}} )
winform.listview.addItem( {text={"8";"10006";"吴八";"男";"12";"0";"南京";}} )
//响应通知
winform.listview.onnotify = function(id,code,ptr){ //通知id,通知代码,指针
select(code) {
//响应选择项改变事件
case 0xFFFFFF9B/*_LVN_ITEMCHANGED*/ {
var nm = winform.listview.getNotifyMessage(code,ptr)//因为行可以多选,所以这样取出响应通知的项才是准确的
if(winform.listview.selIndex){
winform.edit.text = "选中了第 " + winform.listview.selIndex + " 行 "
var 序号 = winform.listview.getItemText(nm.iItem,1)//行,列
var QQ号 = winform.listview.getItemText(nm.iItem,2)
var 昵称 = winform.listview.getItemText(nm.iItem,3)
var 性别 = winform.listview.getItemText(nm.iItem,4)
var 等级 = winform.listview.getItemText(nm.iItem,5)
var Q龄 = winform.listview.getItemText(nm.iItem,6)
var 所在地 = winform.listview.getItemText(nm.iItem,7)
winform.edit.appendText("序号:",序号," QQ号:",QQ号," 昵称:",昵称," 性别:",性别," 等级:",等级," Q龄:",Q龄," 所在地:",所在地)
}
}
}
}
winform.show()
win.loopMessage();
不要在列表视图控件listview里显示太多行数据,比如你有十万条数据,最好分页显示,每页显示一百条或一千条。如果你一定要把所有数据显示到一个列表视图控件listview,超过十万很容易出无响应、添加不了新数据等问题。可以把大量的表数据用table在内存里进行增删改查操作,listview仅用于显示数据,具体请看后续相关帖子。