给listview每行加上复选框

By admin at 2017-11-19 • 1人收藏 • 2167人看过

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*/);

这句就可以实现添加复选框.

blob.png


可是??

表头中怎么实现复选框啊??

1 个回复 | 最后更新于 2017-11-19
2017-11-19   #1

利用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();

blob.png

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...