aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 36888|回复: 3

listview画每行边框的方法

[复制链接]

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
发表于 2018-2-9 16:05:40 | 显示全部楼层 |阅读模式
QQ图片20180209160442.png
下面的代码

有个问题: 为什么最后一行没有外边框啊, 还有如果我鼠标来回点击每个行, 然后会发现偶尔有些时候边框就没了???

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="aardio form";right=945;bottom=474)
  4. winform.add(
  5. 流程编辑框={cls="listview";left=0;top=0;right=946;bottom=350;edge=1;font=LOGFONT(name='FontAwesome';h=-19);fullRow=1;z=1}
  6. )
  7. /*}}*/

  8. import win.fontAwesome;
  9. import win.graphics;
  10. import win.imageList;
  11. var imagelist = win.imageList(5,34);
  12. winform.流程编辑框.setImageList( imagelist,1/*_LVSIL_SMALL*/ );
  13. winform.流程编辑框.insertColumn("",30,,0x2/*_LVCFMT_CENTER*/)
  14. winform.流程编辑框.insertColumn("中断",80,,0x2/*_LVCFMT_CENTER*/)
  15. winform.流程编辑框.insertColumn("备注",300,,0x0/*_LVCFMT_LEFT*/)
  16. winform.流程编辑框.insertColumn("功能",100,,0x0/*_LVCFMT_LEFT*/)
  17. winform.流程编辑框.insertColumn("参数",300,,0x0/*_LVCFMT_LEFT*/)
  18. winform.流程编辑框.insertColumn("",30,,0x2/*_LVCFMT_CENTER*/)
  19. //自适应列宽度
  20. winform.流程编辑框.adjust = function(cx,cy){
  21.     winform.流程编辑框.fillParent(5/*列序号*/);
  22. }
  23. winform.流程编辑框.addItem( {
  24.         text={'\uF00c';'\uF1db';"X轴前进到对准位置";"直线运动";'{["速度"]=1000;["模式"]="相对运动";["距离"]="2380";["是否等待"]="否";}';'\uF01a'}
  25. } )
  26. winform.流程编辑框.addItem( {
  27.         text={'\uF00d';'\uF05e';"Z轴缓慢前进";"直线运动";'{["速度"]=300;["模式"]="连续运动";["是否等待"]="是";}';'\uF01a'}
  28. } )
  29. winform.流程编辑框.addItem( {
  30.         text={'\uF00c';'\uF1db';"连续读传感器值直到大于0.8";"调用子程序";'{["调用子程序"]="连续读传感器";["是否等待"]="是";}';'\uF01a'}
  31. } )
  32. winform.流程编辑框.addItem( {
  33.         text={'\uF00c';'\uF1db';"对准操作";"调用子程序";'{["调用子程序"]="回字形对准算法";["是否等待"]="是";}';'\uF01a'}
  34. } )


  35. //自绘
  36. winform.流程编辑框.onnotify = function(id,code,ptr){
  37.         if( code == 0xFFFFFFF4/*_NM_CUSTOMDRAW*/ ){
  38.                 var lvcd = winform.流程编辑框.getNotifyCustomDraw(code,ptr);
  39.                 if( lvcd.nmcd.dwDrawStage == 0x10001/*_CDDS_ITEMPREPAINT*/)
  40.                         return 0x20/*_CDRF_NOTIFYSUBITEMDRAW*/
  41.                 elseif( lvcd.nmcd.dwDrawStage == 1/*_CDDS_PREPAINT*/ ){
  42.                         return 0x20/*_CDRF_NOTIFYITEMDRAW*/;
  43.                 }
  44.                 elseif( lvcd.nmcd.dwDrawStage == ( 0x10001/*_CDDS_ITEMPREPAINT*/ | 0x20000/*_CDDS_SUBITEM*/) ){
  45.                         //注意这里 iSubItem 的索引自0开始( 其他函数通常自1开始 )
  46.                        
  47.                         var cvs = win.graphics.canvas(); // 创建一个画布
  48.                     cvs.fromHDC(lvcd.nmcd.hdc); // 传入 hDC
  49.                     var nItem = lvcd.nmcd.dwItemSpec;
  50.                     var nSubItem = lvcd.iSubItem;
  51.                     var rc = owner.getItemRect(nItem,nSubItem);
  52.                     cvs.pen.color = 0xebebeb; // 定义画笔的颜色
  53.                     cvs.drawEdge(rc);
  54.                         lvcd.update()
  55.                         cvs.destroy();
  56.                         return 0/*_CDRF_DODEFAULT*/
  57.                 }
  58.         }
  59. }



  60. winform.show();
  61. win.loopMessage();
复制代码

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
 楼主| 发表于 2018-2-9 16:24:17 | 显示全部楼层
用下面的代码替换画edge可以实现画任意颜色
  1. cvs.pen.color = 0xff0000//0xebebeb; // 定义画笔的颜色
  2.                     //cvs.drawEdge(rc);
  3.                     //左上到右上
  4.                     cvs.moveTo(rc.left, rc.top); // 落笔
  5.                 cvs.lineTo(rc.right, rc.top); // 提笔
  6.                     //右上到右下
  7.                     cvs.moveTo(rc.right, rc.top); // 落笔
  8.                 cvs.lineTo(rc.right, rc.bottom); // 提笔
  9.                     //右下到左下
  10.                     cvs.moveTo(rc.right, rc.bottom); // 落笔
  11.                 cvs.lineTo(rc.left, rc.bottom); // 提笔
  12.                 //左下到左上
  13.                     cvs.moveTo(rc.left, rc.bottom); // 落笔
  14.                 cvs.lineTo(rc.left, rc.top); // 提笔
  15.                
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-1-20 12:58 , Processed in 0.079671 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表