找回密码
 加入
搜索
查看: 5439|回复: 7

[GUI管理] ListView 第一列如何不显示图标?(已解决)

  [复制链接]
发表于 2011-4-29 20:53:55 | 显示全部楼层 |阅读模式
本帖最后由 republican 于 2011-5-1 19:25 编辑

我现在想实现第一列不显示图标且不额外占用位置,而其他列可以显示图标的效果。
但目前没找到方法仅仅删除第一列的图标,遂希望给位帮忙看看,谢谢!

以下代码仅仅是显示不存在的图标,且占用位置,希望能获得各位的指点,谢谢。




#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>

Opt('MustDeclareVars', 1)
;~ $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work
_Main()

Func _Main()
        Local $hImage, $hListView

        ; 创建界面
        GUICreate("列表中添加子项", 400, 300)
        $hListView = GUICtrlCreateListView("", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
;~         _GUICtrlListView_SetUnicodeFormat($hListView, False)
        GUISetState()
        ; 加载图像
        $hImage = _GUIImageList_Create()
        _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap(GUICtrlGetHandle($hListView), 0xFF0000, 16, 16))
        _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap(GUICtrlGetHandle($hListView), 0x00FF00, 16, 16))
        _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap(GUICtrlGetHandle($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", 100)
        _GUICtrlListView_AddSubItem($hListView, 0, "Row 1: Col 2", 1,0)
        _GUICtrlListView_AddSubItem($hListView, 0, "Row 1: Col 3", 2, 2)
        _GUICtrlListView_AddItem($hListView, "Row 2: Col 1", 100)
        _GUICtrlListView_AddSubItem($hListView, 1, "Row 2: Col 2", 1,1)
        _GUICtrlListView_AddItem($hListView, "Row 3: Col 1", 100)
        
;~         _GUICtrlListView_DeleteColumn($hListView, 0)
        ; 循环至用户退出
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
EndFunc   ;==>_Main

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-4-29 22:49:48 | 显示全部楼层
_GUICtrlListView_AddItem($hListView, "Row 1: Col 1", 1)



        _GUICtrlListView_AddItem($hListView, "Row 1: Col 1", 100)
 楼主| 发表于 2011-4-29 23:24:04 | 显示全部楼层
回复 2# the886

SO, 这样子第一列不会显示图标?
发表于 2011-4-30 00:05:58 | 显示全部楼层
模拟一下倒是可以
_GUICtrlListView_SetColumnOrder

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-4-30 07:36:10 | 显示全部楼层
回复 4# netegg

很好~

不过我尝试的过程中,发现这个得等待窗口重绘才能显示效果。
发表于 2011-4-30 09:08:06 | 显示全部楼层
本帖最后由 netegg 于 2011-4-30 09:39 编辑

回复 5# republican
是要重绘,试的时候也发现了,加个函数试试,记得有个redraw呀,要不就用update试试看

这样也行,不过会跳一下

        _GUICtrlListView_SetColumnOrder($hListView, '1|3|2')
        _GUICtrlListView_ClickItem($hListView, 0, "left", False, 2, 1)
        _GUICtrlListView_SetItemSelected($hListView, 0, False, False)

这样可以模拟出来,忘了listview有没有双缓冲样式了,如果有可以试下
 楼主| 发表于 2011-4-30 19:17:31 | 显示全部楼层
回复 6# netegg

update是无效的,_WinAPI_RedrawWindow才行。
发表于 2011-4-30 23:19:29 | 显示全部楼层
回复 7# republican
我也记不住了,反正肯定可以实现
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-9 06:40 , Processed in 0.075827 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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