给listview每行加上复选框
By
admin
at 2017-11-19 • 1人收藏 • 2284人看过
listview加上复选框之后,如果只是两列,那么就是checkview了吧.
于是,去checkview里查看它实现的代码.
//checklist 复选列表框
import win.ui.ctrl.listview;
namespace win.ui.ctrl;
var listview = ..win.ui.ctrl.listview;
class checklist{
ctor(parent,tParam){
if( tParam ){
tParam.cls = "SysListView32";
tParam.style |= 3/*_LVS_LIST*/ | 0x4000 /*_LVS_NOCOLUMNHEADER*/
if(tParam.edge)
tParam.exstyle |= 0x200/*_WS_EX_CLIENTEDGE*/;
}
}
onCreate = function(){
this.setExtended(0x4/*_LVS_EX_CHECKBOXES*/)
}
@_metaProperty;
}
checklist._metaProperty = listview._metaProperty;
/**intellisense()
?win.ui.ctrl.checklist =!listview.
win.ui.ctrl.checklist() = 复选列表框\n!listview.
end intellisense**/以上就是在listview基础上实现的checkview的程序,里面还是listview的属性,只是在
onCreate = function(){
this.setExtended(0x4/*_LVS_EX_CHECKBOXES*/)
}增加了这个属性,那么我们就可以以此类推.实现listview每行增加一个多选框
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio Form";right=349;bottom=266;parent=...)
winform.add(
button={cls="button";text="全部勾选";left=133;top=213;right=208;bottom=244;z=3};
listview={cls="listview";left=37;top=36;right=303;bottom=207;asel=false;bgcolor=16777215;dl=1;dr=1;edge=1;font=LOGFONT(name='SimSun');fullRow=1;gridLines=1;msel=1;z=1};
static={cls="static";text="请使用鼠标左键、鼠标右键点击列表项";left=68;top=11;right=303;bottom=29;transparent=1;z=2}
)
/*}}*/
winform.button.oncommand = function(id,event){
if winform.button.text="全部勾选" {
winform.button.text="全部取消"
for (i=1;winform.listview.count;1) {
winform.listview.setChecked(i)
}
}else{
winform.button.text="全部勾选"
for (i=1;winform.listview.count;1) {
winform.listview.setChecked(i,false)
}
}
}
winform.listview.onnotify = function(id,code,ptr){
select(code) {
case 0xFFFFFFFE/*_NM_CLICK*/{
var nm = winform.listview.getNotifyMessage(code,ptr)
if( ! nm.iItem ) return ;
winform.listview.setChecked(nm.iItem,!winform.listview.getChecked(nm.iItem) )
}
}
}
//自适应列宽度
winform.listview.adjust = function(cx,cy){
winform.listview.fillParent(/*列序号*/);
}
winform.listview.insertColumn("姓 名",80,,0x2/*_LVCFMT_CENTER*/)
winform.listview.insertColumn("电话号码",300,,0x2/*_LVCFMT_CENTER*/)
winform.listview.setExtended(0x4/*_LVS_EX_CHECKBOXES*/);
winform.listview.addItem( {
text={"王永工";"13176768888"}
} )
winform.listview.addItem("")
winform.listview.addItem( {
text={"冯有祥";"第三行内容"}
} )
winform.listview.setItemText( {
"刘光明";"第二行内容"
},2);
winform.show()
win.loopMessage();以上代码中主要看
winform.listview.setExtended(0x4/*_LVS_EX_CHECKBOXES*/);
这句就可以实现添加复选框.

可是??
表头中怎么实现复选框啊??
1 个回复 | 最后更新于 2017-11-19
登录后方可回帖
利用htmlayout实现listview的icon功能:
引用自:http://bbs.aardio.com/forum.php?mod=viewthread&tid=12662&highlight=listview
import win.ui; /*DSG{{*/ var winform = win.form( bottom=399;text="。。。。。";right=599 ) /*}}*/ import web.layout; import web.layout.behavior.shellIcon; wbLayout = web.layout( winform ); import gdip.graphics; import gdip.family; import gdip.solidBrush; import gdip.stringformat; namespace web.layout.behavior.ellipsis{ onDrawContent = function(ltOwner,hdc,rc){ var graphics = ..gdip.graphics(hdc); graphics.textRenderingHint = 3/*_GdipTextRenderingHintAntiAliasGridFit*/ var strformat = ..gdip.stringformat(); strformat.align = 1/*_GdipStringAlignmentCenter*/ ; strformat.lineAlign = 1/*_GdipStringAlignmentCenter*/ ; strformat.trimming = 4/*_GdipStringTrimmingEllipsisWord*/ ; var brush = ..gdip.solidBrush( ::GetTextColor(hdc) | 0xFF000000 ); var family = ..gdip.family("MS Shell Dlg"); var font = family.createFont( 15,0/*_GdipFontStyleRegular*/ ) graphics.drawString( ltOwner.innerText,font,rc.float(), strformat,brush); brush.delete(); strformat.delete(); font.delete(); family.delete(); graphics.delete() return true; } } wbLayout.html = /** <body> <widget type="select" name="iconview" id="fileList" multiple="multiple"> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> <option><img class='shell-icon' filename='.txt' /><div>ABC ADADASD SHENG MING.txt</div></option> <option><img class='shell-icon' filename='.jpg' /><div>这是张图片图片图片图片图片图片图片.jpg</div></option> </widget> </body> **/ wbLayout.css = /** #fileList{width:100%%;height:100%%;flow:h-flow;} img.shell-icon { width:64px; height:64px; behavior: shellIcon; } option{width:100px;text-align:center} option > div { display:block; width:100px; height:36px; overflow-x:hidden; behavior:ellipsis; } **/ winform.show() win.loopMessage();