# aardio 范例: checklist 与 listview 复选框



```aardio
import win.ui;
/*DSG{{*/
var winform = win.form(text="checklist 与 listview 复选框";right=688;bottom=480;max=false)
winform.add(
checklist={cls="checklist";left=20;top=45;right=666;bottom=156;bgcolor=0xFFFFFF;edge=1;items={};z=1};
listview={cls="listview";left=22;top=193;right=668;bottom=306;bgcolor=0xFFFFFF;edge=1;z=3};
listview2={cls="listview";left=23;top=341;right=669;bottom=454;bgcolor=0xFFFFFF;edge=1;z=5};
static={cls="static";text="checklist 控件（继承自 listview ）:";left=22;top=21;right=268;bottom=45;transparent=1;z=2};
static2={cls="static";text="普通 listview，启用 checkbox 属性:";left=24;top=169;right=270;bottom=193;transparent=1;z=4};
static3={cls="static";text="普通 listview，在任意列模拟复选框：";left=25;top=317;right=271;bottom=341;transparent=1;z=6}
)
/*}}*/

// -------- checklist 控件 -------- 

//checklist 控件继承了 listview 的所有属性与方法
winform.checklist.items = [["测试项目"],["测试项目2"],["测试项目3"]] //二维数组
winform.checklist.addItem("测试项目4")  

//项目勾选状态变更触发此事件
winform.checklist.onCheckedChanged = function(checked,item){
	if(checked){
		winform.static.text = "选中:" + item;
	}
	else {
		winform.static.text = "取消选中:" + item;
	} 
}

// -------- listview 启用自带复选框（第一列） --------

//启用复选框
winform.listview.checkbox = true;

winform.listview.columns = [ 
	["复选框",100],
	["标题",-1/*自适应宽度*/]//自适应列宽度更简单的方法是将列宽度指定为 -1 就可以了
]

winform.listview.items = [["测试项目","标题一"],["测试项目2","标题二"]] //二维数组

// -------- listview 模拟带复选框（任意列） --------

winform.listview2.columns = [ 
	["标题",-1/*自适应宽度*/],
	["复选框",100,2/*_LVCFMT_CENTER*/],//第二列开始可以使用_LVCFMT_CENTER居中
]

winform.listview2.items = [["测试项目","⬛"],["测试项目2","☑"]] //二维数组

//listview 单击事件
winform.listview2.onClick = function(item,subItem,nmListView){ 

	if(subItem==2){
		/*
		如果没有启用选中整行，则不是点击第一列时 item 为 0。
		我们可以改用 hitTest 获取实际点击的行号与列号。
		*/
		var row,col = winform.listview2.hitTest()
		
		var text = winform.listview2.getItemText(row,col);  
		
		//模拟复选框：我们让复选框显示在了 listview 的最右侧
		winform.listview2.setItemText(text=="⬛" ? "☑" :"⬛",row,col); 
	}
}
 
winform.show() 
win.loopMessage();
```

