利用自绘给listbox前面插入icon图标增加动态效果

By admin at 2022-06-24 • 1人收藏 • 276人看过

前面有几篇文章里讲过对listbox的自绘, 也提供了效果代码, 有兴趣的可以看看.

listbox是不支持imagelist属性的, 要添加图标只能自绘.

这次的效果也不需要那么复杂, 只是在listbox每项前面添加个图标,当选择某项时候改变图标即可.

screenshots.gif

listboxEx.aardio扩展库代码:

//列表样式
import fonts.fontAwesome;
class listboxEx{
	ctor( winform,itemHeight){
		winform.bgcolor = 0xFFFFFF;
		winform.onMeasureItem = function(measureItem){
    		measureItem.itemHeight = itemHeight;  
		}
		
		winform.onDrawItem = function(drawItem){
     		..gdi.selectBrush(
        		function(hdc,pen,brush){
            		var rc = drawItem.rcItem;
					 
            		var text = winform.getItemText(drawItem.itemID + 1);

            		if (drawItem.itemState & 1/*_ODS_SELECTED*/) {  
                		..gdi.fillRect(hdc,0xFFEAC9,rc);
                		var font = ::LOGFONT(weight=600;color=0x00B900);
                		..gdi.textOut(hdc,font,text,rc.left+30, rc.top+10);
                		var ICO = '\uF0A9';
						var font = ::LOGFONT(color=0x00B900;h=-22;name='FontAwesome'); 
						..gdi.textOut(hdc,font,ICO,rc.left+6, rc.top+6);
            		}else {
                		..gdi.fillRect(hdc,0xFFFFFF,rc);
                		var font = ::LOGFONT(weight=400;color=0x000000);
                		..gdi.textOut(hdc,font,text,rc.left+30, rc.top+10);
                		var ICO = '\uF111';
						var font = ::LOGFONT(color=0xC9C9C9;h=-14;name='FontAwesome'); 
						..gdi.textOut(hdc,font,ICO,rc.left+10, rc.top+10);
            		}

					if (drawItem.itemID > 0) {  
                    	..gdi.drawLine(hdc,rc.left, rc.top,rc.right, rc.top);
                    }  
					
					if (drawItem.itemState & 0x10/*_ODS_FOCUS*/) {
						//去掉焦点框  
                		::DrawFocusRect(hdc,rc);
            		}

         		},drawItem.hDC,0xa0a0a0/*背景色*/,0xE6E6E6/*画笔色*/)
		}
	};	
}

使用:

注意: 先手动在属性面板开启listbox[自绘]

import listboxEx;
//绑定样式
listboxEx(mainForm.listbox,32);
//之后添加内容
mainForm.listbox.items = {
"1|应用管理";
"1.1|应用_demo1";
"1.2|应用_demo2";
"1.3|应用_demo3";
"1.4|应用_demo4";
"1|应用管理";
"1.1|应用_demo1";
"1.2|应用_demo2";
"1.3|应用_demo3";
"1.4|应用_demo4";
"1|应用管理";
"1.1|应用_demo1";
"1.2|应用_demo2";
"1.3|应用_demo3";
"1.4|应用_demo4";
};


登录后方可回帖

登 录
信息栏
公告:
个人博客
专注分享
可在分享中适当提问
谢绝纯提问
否则不再提醒一律
删帖
谢谢合作!



本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
Loading...