customPlus 添加选择框的几种方法

光庆 1月前 515

import win.ui;
import godking.vlistEx
/*DSG{{*/
var winform = win.form(text="aardio form";right=375;bottom=199)
winform.add(
plus={cls="plus";left=8;top=8;right=336;bottom=176;notify=1;z=1};
vlistEx={cls="vlistEx";text="自定义控件";left=16;top=8;right=40;bottom=32;hide=1;z=2}
)
/*}}*/

import godking.customPlus
import fonts.fontAwesome

var itemModel = {
	// 第一种方式:一个方框 + 一个√
    {   /* 矩形 */
            type="rect",  /* 类型:rect */
            rectf={x=10;y=10;width=14;height=14},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
            name="checktext",
            check = true,
            width=1,     /* 边框宽度。为0则无边框。  */
            color=0xFF0000FF,               /* 正常状态下,边框颜色 */
            checkedfillcolor = 0xFF0000FF,
        },
    {   /* 文本 */
            type="text",  /* 类型:text */
            rectf={x=10;y=10;width=14;height=14},  /*  文本范围。负数表示距离项目右边的距离。 */
            
            /* 以下为可选项 */
            name="checktext",
            click=true,     /* 是否响应鼠标点击事件 */
            check=true,     /* 元素可被选择。依赖name和click。鼠标点击元素时改变元素选择状态 */
            align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
            valign=1,       /* 文本垂直对齐方式。0、(近端)顶对齐  1、居中  2、(远端)底对齐 */
            smooth=true,    /* 使用平滑效果,抗锯齿 */
            cur=32649,      /* 鼠标指针,_IDC_ 开头的常量。 */
            text="",              /* 正常状态下文本 */
            checkedtext="√",       /* 元素被选择时文本 */
            font={name="Tahoma",point=11,color=0xFFFFFFFF},            /* 正常状态下字体 */
        }
	// 第二种方式:自绘
    {   /* 自绘 */
        	type="paint",  /* 类型:paint,处理过程proc的第一个参数为 godking.paint 对象,可用来绘制所需内容 */
        	rectf={x=30;y=10;width=14;height=14},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
        	proc=function(paint,itemIndex,elemIndex,rectF,disabled,checked,hovered,itemSelected,itemHovered){
        	    paint = toPaint(paint); /* 绑定paint智能提示 */
        	    if checked {
        	    	paint.fillRectF(rectF,0xFF0000FF)
        	    	paint.drawTextF(rectF,"√",::LOGFONT(name="Tahoma";point=11,color=0xFFFFFFFF;brush=null),0,1,1)
        	    } else {
        	    	paint.drawRectF(rectF,0xFF0000FF,/*线宽*/,/*线型*/)
        	    }
        	};
        	name="ownerdraw",
        	click=true,  /* 是否响应鼠标点击事件 */
        	check=true,  /* 原素是否可选择。依赖name和click。鼠标点击元素,改变元素选择状态 */
        	cur=32649,    /* 鼠标指针,_IDC_ 开头的常量。 */
    	}
	// 第三种方式:字体图标
    {   /* 文本 */
            type="text",  /* 类型:text */
            rectf={x=50;y=10;width=18;height=18},  /*  文本范围。负数表示距离项目右边的距离。 */
            
            /* 以下为可选项 */
            name="checktextFontAwesome",
            click=true,     /* 是否响应鼠标点击事件 */
            check=true,     /* 元素可被选择。依赖name和click。鼠标点击元素时改变元素选择状态 */
            align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
            valign=1,       /* 文本垂直对齐方式。0、(近端)顶对齐  1、居中  2、(远端)底对齐 */
            smooth=0,    /* 使用平滑效果,抗锯齿 */
            cur=32649,      /* 鼠标指针,_IDC_ 开头的常量。 */
            text='\uF096',              /* 正常状态下文本 */
            checkedtext='\uF14A',       /* 元素被选择时文本 */
            font={name="FontAwesome",h=18,color=0xFFFF0000},            /* 正常状态下字体 */
        }
	// 第四种方式:图片
    {   /* 图片*/
            type="img",  /* 类型:text */
            rectf={x=70;y=10;width=14;height=14},  /*  文本范围。负数表示距离项目右边的距离。 */
            
            /* 以下为可选项 */
            name="checkimg",
            click=true,     /* 是否响应鼠标点击事件 */
            check=true,     /* 元素可被选择。依赖name和click。鼠标点击元素时改变元素选择状态 */
            cur=32649,      /* 鼠标指针,_IDC_ 开头的常量。 */
            img = winform.vlistEx.checkBox.getDefaultUncheckedImg(),              /* 正常状态下文本 */
            checkedimg = winform.vlistEx.checkBox.getDefaultCheckedImg(),       /* 元素被选择时文本 */
        }        	
}

var c = godking.customPlus(winform.plus,itemModel,{{}},{
	itemWidth=100, 	/*项目最小宽度,为0时根据colnum自动计算,所以不能与colnum同时=0*/
	itemHeight=100,	/*项目最小高度,为0时根据rownum自动计算,所以不能与rownum同时=0*/
	autoSizeWidth=false,	/*为true则自动将项目总宽度拉伸填满plus宽度,每个项目宽度不小于itemWidth*/
	autoSizeHeight=false,	/*为true则自动将项目总高度拉伸填满plus高度,每个项目高度不小于itemHeight*/
	rownum=1, 	/*项目行数,为0时根据itemHeight自动计算,所以不能与itemHeight同时=0*/
	colnum=1, 	/*项目列数,为0时根据itemWidth自动计算,所以不能与itemWidth同时=0*/
	padLeft=0,	/*plus左边空白距离*/
	padTop=0,	/*plus顶边空白距离*/
	padRight=0,	/*plus右边空白距离*/
	padBottom=0, /*plus底边空白距离*/
	autoFit=false, 	/*是否自动调整plus组件宽度或高度(其中之一),保证能刚好显示全部行或列*/
					/*当 itemHeight>0 且 colnum>0 且 rownum=0 时,自动调整plus高度,以能显示全部行*/
					/*当 itemWidth>0 且 rownum>0 且 colnum=0 时,自动调整plus宽度,以能显示全部列*/
	vertical=false, /*是否将项目设置为竖向排列,行滚动方向设置为横向*/
	bkcolor=0xFFFFFFFF, /*背景颜色*/
	bkimg=null, /*背景图像*/
	singleCheck=0,/*元素check单选模式。0:多选;1:每个项目内单选;2:整个列表单选*/
})

winform.show();
win.loopMessage();


最新回复 (4)
  • 小光芒 1月前
    0 2
    狂赞
  • 三生有幸 1月前
    0 3
    狂赞加怒赞
  • Jony 13天前
    0 4
    添加复选框之后,如何在添加项目的时候选择该复选框?
  • 光庆 13天前
    0 5
    Jony 添加复选框之后,如何在添加项目的时候选择该复选框?

    1、可以设置 itemList 后,再通过 setChecked() 函数设置某项目的某元素的选中状态。

    c.setChecked(1/*itemIndex*/,"ownerdraw"/*elemName*/,true); 
    c.setChecked(1/*itemIndex*/,"checkimg"/*elemName*/,true);

    2、可以直接在 itemList 的项目中,用 checked 成员指定某元素的选中状态。

    itemList = {
        { checked = {checktext=true;checkimg=true;} }
        { checked = {ownerdraw=true;checkimg=true;} }
    }
返回