aardio 官方社区

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 10461|回复: 4

总结:listview获取系统目录和图标的两种写法

[复制链接]

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
发表于 2017-11-8 11:01:32 | 显示全部楼层 |阅读模式
本帖最后由 popdes 于 2017-11-8 11:27 编辑

如题:
功能比较简单, 写给自己 与 自己一样的新人.
功能: 获取系统目录和图标,显示在listview

本来是想能不能显示到listbox控件里, 但是发现listbox是没有imagelist属性的,
Jacen发的有个用treeview树形控件实现explore的代码, 于是想能不能移植到listview中....
昨晚弄了一晚,奈何技术不行,也没弄出个所以然来. 后面慢慢实验, 如果移植出来了也分享出来, 先总结个最基础的代码...

QQ截图20171108105539.png
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="listview获取系统图标列表";right=783;bottom=583;bgcolor=12213772;parent=...)
  4. winform.add(
  5. listview={cls="listview";left=16;top=110;right=373;bottom=556;db=1;dl=1;dr=1;dt=1;edge=1;vscroll=1;z=1};
  6. listview2={cls="listview";left=407;top=109;right=764;bottom=555;db=1;dl=1;dr=1;dt=1;edge=1;vscroll=1;z=2};
  7. static={cls="static";text="方式一";left=24;top=64;right=214;bottom=97;color=16777215;font=LOGFONT(h=-29);transparent=1;z=3};
  8. static2={cls="static";text="方式二";left=411;top=71;right=601;bottom=104;color=16777215;font=LOGFONT(h=-29);transparent=1;z=4}
  9. )
  10. /*}}*/

  11. import fsys;
  12. import fsys.lnk;
  13. import fsys.info;
  14. //获取系统图标列表

  15. //移除列标题
  16. winform.listview.modifyStyle(,0x4000/*_LVS_NOCOLUMNHEADER*/)
  17. winform.listview.insertColumn("1",-1)
  18. winform.listview2.modifyStyle(,0x4000/*_LVS_NOCOLUMNHEADER*/)
  19. winform.listview2.insertColumn("1",-1)   
  20. //win.ui.explorer
  21. import win.imageList;
  22. shImageList = win.imageList.shell( 0/*_SHIL_LARGE*/  )
  23. winform.listview.setImageList( shImageList,1/*_LVSIL_NORMAL*/ )
  24. winform.listview2.setImageList( shImageList,1/*_LVSIL_NORMAL*/ )

  25. //方式一
  26. files,,dirs = ..fsys.list("C:\Users\Administrator\Desktop");
  27. var filename;
  28. var getInfo = ..fsys.info.get;
  29. var toUnicode = ..string.toUtf16;
  30. for(i=1;#files){
  31.                 filename = files[i];
  32.                 var sfi = getInfo(files[filename]    ,0x10/*_SHGFI_USEFILEATTRIBUTES*/ | 0x4000/*_SHGFI_SYSICONINDEX*/);
  33.                 winform.listview.addItem( {
  34.                             text = toUnicode(filename);
  35.                             iImage = sfi.iIcon;
  36.                     } )
  37.                }


  38. //方式二
  39. var lnk = fsys.lnk();
  40. fsys.enum( fsys.getSpecial(0 /*_CSIDL_DESKTOP*/ ) , "*.*",
  41.         function(dir,filename,fullpath,findData){
  42.                 if(filename){
  43.                   // lnk.load(fullpath);//加载快捷方式
  44.                    //console.log("快捷方式:"+filename, "实际路径:"+lnk.path )
  45.                    //路径如果用filename,得到的图标中快捷方式会没图标
  46.                    //var sfi = fsys.info.get(filename, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x10/*_SHGFI_DISPLAYNAME*/)
  47.                    var sfi = fsys.info.get(fullpath, 0x4000/*_SHGFI_SYSICONINDEX*/ | 0x10/*_SHGFI_DISPLAYNAME*/)
  48.                    //显示图标
  49.                     winform.listview2.addItem( {
  50.                             text = filename;//sfi.szDisplayName;不显示后缀
  51.                             iImage = sfi.iIcon;
  52.                     } )
  53.                 }
  54.         },false
  55. );


  56. winform.enableDpiScaling();
  57. winform.show();

  58. win.loopMessage();

复制代码

1

主题

8

回帖

119

积分

培训班

积分
119
发表于 2017-11-13 10:53:55 | 显示全部楼层
不错,感谢分享!

0

主题

3

回帖

33

积分

新手入门

积分
33
发表于 2017-11-17 09:32:46 | 显示全部楼层
真是太感謝了, 很嫩的新手 正在學習中

請問一下 : 要如何將 listview 中的 item 一次全部刪除  ?   雖然我看了 庫  中有 [0xFFFFFF98/*_LVN_DELETEALLITEMS*/]  的描述, 還是不知道如何使用

還請惠賜範例

166

主题

2154

回帖

1万

积分

管理员

积分
13056
发表于 2017-11-17 12:41:49 | 显示全部楼层
tea2017 发表于 2017-11-17 09:32
真是太感謝了, 很嫩的新手 正在學習中

請問一下 : 要如何將 listview 中的 item 一次全部刪除  ...

winform.listview.clear() 就可以了,库函数文档里有的。
其实在几乎所有清空的函数,基本都是叫 clear() ,要不就是 removeAll等等,写多了就不困惑了。

0

主题

3

回帖

33

积分

新手入门

积分
33
发表于 2017-11-17 13:33:38 | 显示全部楼层
Jacen.He 发表于 2017-11-17 12:41
winform.listview.clear() 就可以了,库函数文档里有的。
其实在几乎所有清空的函数,基本都是叫 clear( ...

真是感謝有你 !
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-6 23:26 , Processed in 0.063708 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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