如何修改listview列表框中某一行的图标(已解决)
本帖最后由 nmgwddj 于 2012-2-19 22:21 编辑如图,通过右键“换图标”按钮,修改其中一行的图标。因为列表信息是通过for循环创建的,无法定位某一行的的控件ID,不知各位有啥想法。看了看udf貌似没有处理这方面的函数。
论坛中看了其他的方法,http://www.autoitx.com/forum.php?mod=viewthread&tid=26675&highlight=listview%2B%CD%BC%B1%EA。
我是想不通过控件ID的方式,来修改图标,因为我的确无法定位我到底要创建多少行信息。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 496, 389, 270, 202)
$ListView1 = GUICtrlCreateListView("col1|col2|col3", 16, 16, 466, 302)
$ListViewButton = GUICtrlCreateContextMenu($ListView1)
$ListBut_1 = GUICtrlCreateMenuItem("换图标", $ListViewButton)
$ListBut_2 = GUICtrlCreateMenuItem("Eixt", $ListViewButton)
$Button1 = GUICtrlCreateButton("Button1", 328, 336, 75, 25)
$Button2 = GUICtrlCreateButton("Exit", 408, 336, 75, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
For $i = 1 To 10
GUICtrlCreateListViewItem('1 - ' & $i & '|2 - ' & $i & '|3 - ' & $i, $ListView1)
GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -25)
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $ListBut_2, $Button2
Exit
EndSwitch
WEnd
_GUICtrlListView_GetItemFocused或者_GUICtrlListView_GetItemSelected
不就知道了 回复 2# netegg
能确定是否高亮,是否被选中,但是我不知道用啥函数给这一行换图标。
比如GUICtrlSetImage,要知道控件ID后才能换{:face (456):} 回复 3# nmgwddj
你要的控件id指的是什么,图标的? 回复 4# netegg
你看,设置图标的时候可以用GUICtrlSetImage,但是第一个参数就是需要控件的ID,列表中有很多行,不知道每一行的控件ID是多少。所以通过GUICtrlSetImage来设置图标就实现不了。
我就是问问大家是否有其他的方法 _GUIImageList_Create
_GUICtrlListView_Create
_GUICtrlListView_SetImageList 我看看,先谢谢您了。 _GUICtrlListView_SetItemImage() 本帖最后由 netegg 于 2012-2-19 20:08 编辑
回复 8# afan
lz要的好像是指定行的图标,后期替换
说实话,我也不是很清楚lz的真正意图何在
而且一直就没弄明白为什么一定要controlid 回复 9# netegg
后期替换? 不懂意思… _GUICtrlListView_SetItemImage 可以换是肯定的
貌似刚才LZ连自己的头像也换了… 回复 10# afan
恩,头像换了,之前的不好看
我是在制作一个管理软件,要想系统用户管理界面一样,我把某个用户禁用后,图标是一种状态,启用后又是另外一种状态,通过listview右键菜单的方式禁用和启用。就是在后期改。正如netegg所说。 回复 11# nmgwddj
不管前期中期后期,都可以换
_GUIImageList_Create
_GUICtrlListView_Create
_GUICtrlListView_SetImageList
+
_GUICtrlListView_SetItemImage 我在看您之前帮我写的启动项管理工具,有类似功能的。
。。手里太忙,还在上班,烦透了,一点都清闲不下来。 回复 1# nmgwddj
这样不行吗?#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 496, 389, 270, 202)
$ListView1 = GUICtrlCreateListView("col1|col2|col3", 16, 16, 466, 302)
$ListViewButton = GUICtrlCreateContextMenu($ListView1)
$ListBut_1 = GUICtrlCreateMenuItem("换图标", $ListViewButton)
$ListBut_2 = GUICtrlCreateMenuItem("Eixt", $ListViewButton)
$Button1 = GUICtrlCreateButton("Button1", 328, 336, 75, 25)
$Button2 = GUICtrlCreateButton("Exit", 408, 336, 75, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Local $ListViewItem
For $i = 0 To 9
$ListViewItem[$i] = GUICtrlCreateListViewItem('1 - ' & $i & '|2 - ' & $i & '|3 - ' & $i, $ListView1)
GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -25)
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $ListBut_2, $Button2
Exit
Case $ListBut_1
For $count = 0 To 9
$check = _GUICtrlListView_GetItemState($ListView1, $count, $LVIS_SELECTED)
If $check Then ExitLoop
Next
GUICtrlSetImage($ListViewItem[$count], @SystemDir & '\shell32.dll', -20)
EndSwitch
WEnd
回复 14# lixiaolong
{:face (394):}狂到,是这效果,还没看明白你是咋实现的。。。我这人太多了稍等一会看,先谢谢。
页:
[1]
2