东风破 发表于 2014-4-20 21:11:32

[已解决]为Listview控件添加图像列表,首列不显示图像,只在子项显示图像。

本帖最后由 东风破 于 2014-4-23 14:27 编辑

以 _GUICtrlListView_AddItem示例程序说明这问题吧。#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

$Debug_LV = False ; 检查传递给 ListView 函数的类名, 设置为True并输出到一个控件的句柄,用于检查它是否工作

_Main()

Func _Main()
    Local $hImage, $hListView

    ; 创建界面
    GUICreate("列表中添加项目", 400, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    GUISetState()

    ; 加载图像
    $hImage = _GUIImageList_Create()
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x00FF00, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x0000FF, 16, 16))
    _GUICtrlListView_SetImageList($hListView, $hImage, 1)

    ; 添加列
    _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($hListView, 1, "Column 2", 100)
    _GUICtrlListView_InsertColumn($hListView, 2, "Column 3", 100)

    ; 添加项目
    _GUICtrlListView_AddItem($hListView, "Row 1: Col 1" ,0)
    _GUICtrlListView_AddItem($hListView, "Row 2: Col 1", 1)
    _GUICtrlListView_AddItem($hListView, "Row 3: Col 1", 2)


    ; 循环至用户退出
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>_Main目的:首列不显示图像,而让子列显示图像。

_GUICtrlListView_AddItem 第三个参数——“ [可选参数] 项目图标在图像列表中的 0 基索引 ”。即是可选,证明可以不加此参数以达到不显示图像的目的。

但是实际测试中发现,去掉此参数发现没有效果。首列依旧显示图像...



而 _GUICtrlListView_AddSubItem 去掉参数可以实现不显示图像的目的。不知道怎么才能实现我想要的目的,望大家赐教。

看来只钻牛角尖是不行的,多谢netegg大神的指点。只需添加列的时候,将首列宽度设置为0不显示,而从第二项开始显示便达到效果了!_GUICtrlListView_InsertColumn($ListView1, 0, "",0);宽度设置为0不显示
_GUICtrlListView_InsertColumn($ListView1, 1, "店面", 80)

seniors 发表于 2014-4-21 08:02:05

仔细看帮助、看参数

东风破 发表于 2014-4-21 09:20:45

回复 2# seniors


    嗯,我再看看。

东风破 发表于 2014-4-21 11:54:52

回复 2# seniors


    你好,仔细看了好久,测试了好多次。还是没办法实现,现在我只能把状态在首列显示以达到自己的目的。


望指教。

seniors 发表于 2014-4-21 12:35:52

经测试,首列无图标时,可以不显示,但图标位置会空出

还是用楼上的方式吧

东风破 发表于 2014-4-21 13:05:12

回复 5# seniors


    嗯,这个是测试过的。当把索引参数设置为无效的图标索引号的时候就会不显示,不过的确是有空的地方。后来我试过首列添加时 _GUICtrlListView_AddColumn$fOnRight参数设置为True,(为 True, 则列图像显示在文字右侧)。但是不知道是我系统问题还是怎样,仍然是没有任何效果。XP

netegg 发表于 2014-4-23 07:28:07

http://www.autoitx.com/thread-16282-1-1.html
和这个差不多

东风破 发表于 2014-4-23 08:44:28

回复 7# netegg


    大早上一上论坛,还真的有大神回复!哈哈!刚看了您的帖子,应该是一样的。晚上回去测试下,然后把结果发上来。多谢

东风破 发表于 2014-4-23 14:17:43

回复 7# netegg


    哈哈哈,多谢netegg大神的指点,看了半天您的源码,是拿带有checkbox样式的treeview覆盖listview子项实现的子项显示checkbox。我的问题在于listview本身有子项显示image的样式,所以只需要隐藏掉主项的image。您的一句代码提醒了我:_GUICtrlListView_InsertColumn($hListView, 0, "", 0)
只要隐藏掉首列,从第二列开始显示就好了。再次感谢!!!

东风破 发表于 2014-4-23 14:24:21

回复 5# seniors

多谢您的帮助,已解决。

hollandmfq 发表于 2014-4-23 23:01:42

不错不错!
页: [1]
查看完整版本: [已解决]为Listview控件添加图像列表,首列不显示图像,只在子项显示图像。