aardio - 【库】listboxEX 列表框自绘库

33 篇文章 17 订阅

说明:

// listboxEX 列表框自绘库
// 光庆封装 V2.3
// 本库是我为了练习列表框自绘,参考 一步一步自绘listbox实现html中的伸缩列表导航栏功能 - aardio学习笔记 的思路及代码,重写并增添了部分功能,在此对各帖子作者表示感谢。存在的不足之处,请各位大侠留言指正。

库下载:

光庆·程序·在线 → aardio资源下载http://chengxu.online/index.asp

解压缩到 /lib/godking/ 目录下,引用方式:

import godking.listboxEX

// 征集好看的主题,请将您珍藏的主题参数留言,我集成到库里面。

1、详细的主题设置,可自定义菜单及项目的字体名称、文本大小、文本颜色、图标、背景颜色等各项功能。

2、内置两种主题:listboxEX.theme_dark(暗色主题) 和 listboxEX.theme_light (亮色主题)。

3、可通过 setTheme() 和 getTheme() 设置和获取当前主题。

4、可通过 listboxEX.theme 获取主题数据模板(以暗色主题数据为模板)

5、可通过 listboxEX.menulist 获取菜单项目数据模板。

6、支持自动关闭非当前选中的菜单(设置为alwaysOpend的菜单不能关闭)。

7、支持隐藏菜单右侧的展开状态小三角图标。

8、支持gdi方式自绘(有锯齿)和gdip方式自绘(防锯齿)。默认为gdip。

9、可以设置当点击已展开的菜单时,是否将其关闭(设置为alwaysOpend的菜单不能关闭)。

调用方式:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程15";right=585;bottom=476)
mainForm.add(
listbox={cls="listbox";left=0;top=0;right=250;bottom=479;db=1;dl=1;dr=1;dt=1;items={};ownerDraw=1;vscroll=1;z=1}
)
/*}}*/

import godking.listboxEx
var lb = godking.listboxEx(	mainForm.listbox/*列表框组件*/,
					godking.listboxEx.menulist/*菜单列表,内容可参考listboxEx.menulist*/,
					godking.listboxEx.theme_light /*亮色主题,内容可参考listboxEx.theme*/
					)

lb.onClick = function(index,subindex,text){
	if subindex ..win.msgbox("您点击了项目:"+text);
	else ..win.msgbox("您点击了菜单:"+text);
}

mainForm.show();
win.loopMessage();

执行效果:

更详细的用法:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程15";right=585;bottom=476)
mainForm.add(
listbox={cls="listbox";left=0;top=0;right=250;bottom=479;db=1;dl=1;dr=1;dt=1;items={};ownerDraw=1;vscroll=1;z=1}
)
/*}}*/

import godking.listboxEx
var menulist = {
        {
        	"\uF054,\uF078,系统设置",/*菜单图标,菜单选中时图标,菜单文本*/
        	{
     			"\uF014,\uF015,声音设置",/*项目图标,项目选中时图标,项目文本*/
      			"\uF016,\uF017,图像设置",
      			"\uF018,\uF019,打印数据",
      			"\uF020,\uF021,打印数据",
        	},
        	opened = true,/*展开*/
        	alwaysOpened =false/*总是展开*/
	    }, 
        {
        	"\uF054,\uF078,数据处理",
        	{
     			"\uF022,\uF023,报表生成",
      			"\uF024,\uF025,打印数据",
      			"\uF026,\uF027,打印数据",
      			"\uF028,\uF029,打印数据",
        	},
        	opened = false,
        	alwaysOpened = false
	    },
        {
        	"\uF054,\uF078,关于软件",
        	{
     			"\uF022,\uF023,公司简介",
      			"\uF024,\uF025,招聘信息",
      			"\uF026,\uF027,联系方式",
        	},
        	opened = false,
        	alwaysOpened = false
	    }	    
    }

var theme = {
bgcolor = 0xa0a0a0,/*组件背景色*/
hideOpenedIcon = false,/*隐藏菜单右边小三角图标*/
useGdip = true,/*使用gdip防锯齿*/
itemHeight = 40,/*菜单和项目高度*/
autoClose = true,/*自动关闭非当前菜单,对alwaysOpen的菜单无效*/
menuFontName = "黑体",/*菜单字体名称*/
menuFontH = 20,/*菜单字体高度,单位:像素*/
menuFontWeight = 400,/*菜单字体粗细,0~1000,正常为400*/
menuBgColor = 0x302D29,/*菜单背景颜色*/
menuSelBgColor = 0x302D29,/*菜单选中时背景颜色*/
menuTextColor = 0xD1D1D1,/*菜单文本颜色*/
menuSelTextColor = 0xD1D1D1,/*菜单选中时文本颜色*/
menuUnderlineColor = null,/*菜单下划线颜色,为null时没有下划线*/
itemFontName = "黑体",/*项目字体名称*/
itemFontH = 18,/*项目字体高度,单位像素*/
itemFontWeight = 400,/*项目字体粗细,0~1000,正常为400*/
itemBgColor = 0x3F3C38,/*项目背景颜色*/
itemSelBgColor = 0x6E6B67,/*项目选中时背景颜色*/
itemTextColor = 0xD1D1D1,/*项目文本颜色*/
itemSelTextColor = 0xD1D1D1,/*项目选中时文本颜色*/
itemUnderlineColor = null/*项目下划线颜色,为null时没有下划线*/
}

var lb = godking.listboxEx(	mainForm.listbox,menulist,theme)
 /*不指定theme主题则默认使用暗色主题*/

lb.onClick = function(index,subindex,text){
	if subindex ..win.msgbox("您点击了项目:"+text);
	else ..win.msgbox("您点击了菜单:"+text);
}

mainForm.show();
win.loopMessage();

执行效果:

小窍门:

1、在IDE中,您不用记住菜单项目的数据格式,只需要输入

var menulist = godking.listboxEx.menulist 回车,

会自动生成一段菜单项目列表数据,供参考修改:

 2、在IDE中,您不用记住主题数据格式,只需要输入var menulist = godking.listboxEx.theme 回车,会自动生成一段主题表数据,供参考修改:

3、修改部分主题参数:

A、在创建时,在使用默认主题的基础上,通过指定第三个参数来实现:

var lb = godking.listboxEX(	mainForm.listbox,
                    menulist,
                    {itemHeight=60,hideOpenedIcon=true,useGdip=false}
                    //使用默认主题,项目高度60,隐藏右边小三角,不使用防锯齿。
                   )

 B、使用 setTheme 实现:

var lb = godking.listboxEX(	mainForm.listbox,
                    menulist,
                    // 使用默认主题
                   )

lb.setTmeme( {itemHeight=60,hideOpenedIcon=true,useGdip=false} )
                    //修改当前主题参数:项目高度60,隐藏右边小三角,不使用防锯齿。

C、通过提前修改好主题表,然后创建时实现:

var theme = ..table.assign({}, godking.listboxEX.theme_light,{itemHeight=60,hideOpenedIcon=true,useGdip=false})
var lb = godking.listboxEX(	mainForm.listbox,menulist,theme)

D、直接修改内置主题模板: 

..table.assign(godking.listboxEX.theme_light,{itemHeight=60,hideOpenedIcon=true,useGdip=false})
var lb = godking.listboxEX(	mainForm.listbox,menulist,godking.listboxEX.theme_light)

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值