aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 10575|回复: 2

求教,ListView控件里显示文件和文件夹,如何绑定系统图标?

[复制链接]

8

主题

10

回帖

108

积分

一级会员

积分
108
发表于 2014-11-13 16:39:21 | 显示全部楼层 |阅读模式
我想做个类似资源管理器的东西,ListView里显示的文件和文件夹,不知道怎么绑定这些文件本身的默认图标,请指点,谢谢!

5

主题

429

回帖

2420

积分

五级会员

积分
2420
发表于 2014-11-13 17:30:15 | 显示全部楼层
类似资源管理器可以参考下面的源码
http://bbs.aardio.com/forum.php?mod=viewthread&tid=11160

listview添加图标很简单,首先获取系统图像列表并绑定到listview控件,代码如下:
//获取系统图标列表
import win.imageList;
shImageList = win.imageList.shell( 1
/*_SHIL_SMALL*/  )
winform.listview.setImageList( shImageList,0
/*_LVSIL_NORMAL*/ )
然后获取指定文件在系统图像列表中的索引,并添加到listview中就行了,例如:
//获取文件图标索引
import fsys.info;
var filename = io._exepath; //要显示图标的文件路径
var sfi = fsys.info.get(filename, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x200/*_SHGFI_DISPLAYNAME*/)

//显示图标
winform.listview.addItem( {
    text = sfi.szDisplayName;
    iImage = sfi.iIcon;
} )
下面是完整版示例:


  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form(text="listview显示图标";right=349;bottom=249)
  4. winform.add(
  5. listview={cls="listview";left=9;top=11;right=338;bottom=237;edge=1;mode="icon";z=1}
  6. )
  7. /*}}*/

  8. //获取系统图标列表
  9. import win.imageList;
  10. shImageList = win.imageList.shell( 0/*_SHIL_LARGE*/  )
  11. winform.listview.setImageList( shImageList,0/*_LVSIL_NORMAL*/ )

  12. //获取文件图标索引
  13. import fsys.info;
  14. var filename = io._exepath; //要显示图标的文件路径
  15. var sfi = fsys.info.get(filename, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x200/*_SHGFI_DISPLAYNAME*/)

  16. //显示图标
  17. winform.listview.addItem( {
  18.         text = sfi.szDisplayName;
  19.         iImage = sfi.iIcon;
  20. } )

  21. winform.show()
  22. win.loopMessage();
复制代码

8

主题

10

回帖

108

积分

一级会员

积分
108
 楼主| 发表于 2014-11-13 18:01:18 | 显示全部楼层
太给力了,多谢!!!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2024-5-19 16:34 , Processed in 0.052887 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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