通过自绘实现自定义列表框listview的颜色,演示源码如下:
import win.ui;
/*DSG{{*/
var winform = win.form(text="AAuto Form";right=472;bottom=344;parent=...)
winform.add(
listbox={cls="listbox";left=12;top=11;right=458;bottom=332;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;font=LOGFONT(name='宋体');items={};style=96;vscroll=1;z=1}
)
/*}}*/
winform.listbox.onMeasureItem = function(measureItem){
measureItem.itemHeight = 20;
}
import gdip.graphics;
winform.listbox.onDrawItem = function(drawItem){
var graphics = gdip.graphics(drawItem.hDC)
graphics.smoothingMode = 4/*_GdipSmoothingModeAntiAlias*/
graphics.compositingQuality = 2/*_GdipCompositingQualityHighQuality*/
//绘制高亮背景色
var bgbrush,color;
var rcf = drawItem.rcItem.float();
if(drawItem.itemID%2){//行背景色
color = 0xff00e0ef;
}else {
color = 0xffFFe0ef;
}
bgbrush = gdip.solidBrush(color)
graphics.fillRectangle(bgbrush,rcf.x,rcf.y,rcf.width,rcf.height);
bgbrush.delete();
//输出标题
var strformat = ..gdip.stringformat();
strformat.align = 1/*_GdipStringAlignmentCenter*/ ;
strformat.lineAlign = 1/*_GdipStringAlignmentCenter*/ ;
var tbrush = ..gdip.solidBrush( 0xFF000000 );//文字颜色
var font = gdip.font(drawItem.hDC,::LOGFONT( name="MS Shell Dlg";h = 11.5))
var text = winform.listbox.getItemText(drawItem.itemID+1);
graphics.drawString( text ,font,rcf, strformat,tbrush);
tbrush.delete();
font.delete();
graphics.delete();
}
winform.listbox.add("腾讯QQ|一款即时聊天软件");
winform.listbox.add("Microsoft Office|一款办公套装");
winform.listbox.add("aardio|桌面软件快速开发");
winform.listbox.add("简码编程|www.jianma123.com");
winform.show();
win.loopMessage();
感谢群友:mick