找回密码
 加入
搜索
查看: 2222|回复: 4

[AU3基础] 有关_GUICtrlListView_Create创建控制多选与排序的问题,请进来!(已解决)

[复制链接]
发表于 2012-6-24 17:45:36 | 显示全部楼层 |阅读模式
本帖最后由 txm888 于 2012-6-26 00:15 编辑

我发现用_GUICtrlListView_Create创建的控制不能设为多选和升降排序,而用GUICtrlListView创建的控制则能多选和升降排序,请问这是为什么?有哪位仁兄遇到过?
发表于 2012-6-24 17:53:08 | 显示全部楼层
本帖最后由 netegg 于 2012-6-24 18:22 编辑

默认是: $LVS_REPORT(0x0001), $LVS_SINGLESEL(0x0004), $LVS_SHOWSELALWAYS(0x0008)
不过可能不太好整,不过倒是可以用另一种方式满足,选中的时候设置每行背景色,换项目的时候原行不变,新选行改变背景色就行了(http://www.autoitx.com/thread-15521-1-1.html
如果lz有兴趣,用_sendmessage试试,可以在创建时搞定

评分

参与人数 1金钱 +10 贡献 +3 收起 理由
txm888 + 10 + 3 谢谢支持

查看全部评分

发表于 2012-6-24 20:56:10 | 显示全部楼层
本帖最后由 happytc 于 2012-6-24 21:01 编辑

回复 1# txm888


#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Global $hListview
Global $aItemData[10] = ["Name1|192.168.1.5|999999991|PC0|00112233FE", _
                "Name2|192.168.1.4|999999993|PC2|00112233BD", _
                "Name3|192.168.1.3|999999995|PC4|00112233AC", _
                "Name4|192.168.1.2|999999992|PC1|00112233F0", _
                "Name5|192.168.1.1|999999994|PC3|00112233E8", _
                "Name6|192.168.1.6|999999996|PC6|00112233E9", _
                "Name7|192.168.1.7|999999997|PC7|00112233EA", _
                "Name8|192.168.1.8|999999998|PC8|00112233EB", _
                "Name9|192.168.1.9|999999999|PC9|00112233EC", _
                "Name0|192.168.1.0|999999990|PC10|00112233ED"]
_Main()

Func _Main()
        Local $iExListViewStyle, $iExListViewStyle, $hGUI
        Local $aColWidths[5] = [150, 150, 150, 250, 200]
        
        $iExWindowStyle = BitOR($WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE)
        $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_GRIDLINES, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)

        $hGUI = GUICreate("ListView Sort", 920, 300)
        $hListview = _GUICtrlListView_Create($hGUI, "Domain Device|IP Address|Serial Number|Description|Mac Address", 5, 5, 910, 250, $LVS_REPORT, $iExWindowStyle)
        _GUICtrlListView_SetExtendedListViewStyle($hListview, $iExListViewStyle)
        
        For $i = 0 To UBound($aColWidths) - 1
                _GUICtrlListView_SetColumnWidth($hListview, $i, $aColWidths[$i])
        Next
        _GUICtrlListView_SetBkColor($hListview, 0xA6CAF0)
        _GUICtrlListView_JustifyColumn($hListview, 4, 2)
        
        _FillItems()
        GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
        GUISetState()

        _GUICtrlListView_RegisterSortCallBack($hListview, True, True)

        While True
                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE
                                ExitLoop
                EndSwitch
        WEnd
        _GUICtrlListView_UnRegisterSortCallBack($hListview)
        GUIDelete()
EndFunc


Func _FillItems()
        Local $aSplit
        For $i = 0 To UBound($aItemData) - 1
                $aSplit = StringSplit($aItemData[$i], "|")
                _GUICtrlListView_AddItem($hListview, $aSplit[1], -1, _GUICtrlListView_GetItemCount($hListview) )
                For $j = 2 To $aSplit[0]
                        _GUICtrlListView_AddSubItem($hListview, $i, $aSplit[$j], $j - 1)
                Next
        Next
EndFunc

Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg, $iwParam
        Local $hWndFrom, $iCode, $tNMHDR

        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iCode = DllStructGetData($tNMHDR, "Code")

        Switch $hWndFrom
                Case $hListview
                        Switch $iCode
                                Case $LVN_COLUMNCLICK
                                        Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
                                        Local $iCol = DllStructGetData($tInfo, "SubItem")
                                        _GUICtrlListView_SortItems($hWndFrom, $iCol)
                        EndSwitch
        EndSwitch
        Return $__LISTVIEWCONSTANT_GUI_RUNDEFMSG
EndFunc


评分

参与人数 1金钱 +20 贡献 +5 收起 理由
txm888 + 20 + 5

查看全部评分

 楼主| 发表于 2012-6-26 00:13:18 | 显示全部楼层
回复 2# netegg


    不好意思,今天才回来,感谢蛋蛋大师给的指引,不过,我试过了,多选可以,排序不行。。。小的级别不行
 楼主| 发表于 2012-6-26 00:14:39 | 显示全部楼层
回复 3# happytc


    很不错的一例,堪称完美,同时解决了该函数创建的控制实现多选与排序的问题,再次感谢,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 11:53 , Processed in 0.079358 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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