#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
#include <Array.au3>
$Form1 = GUICreate("Form1", 800, 600)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Local $iExListViewStyle = BitOR($WS_EX_CLIENTEDGE, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES)
$ListView1 = GUICtrlCreateListView("工单编号|姓名|备注", 112, 72, 569, 409, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT), $iExListViewStyle)
GUICtrlSetFont(-1, 11, 800, 0, "微软雅黑")
GUICtrlCreateListViewItem("1|张三|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("2|李四|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("3|王五|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("4|张三|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("5|李四|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("6|王五|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("7|张三|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("8|李四|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("9|王五|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("10|张三|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("11|李四|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("12|王五|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("13|张三|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("14|李四|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("15|王五|欢迎使用 AutoIt v3 中文版 !", $ListView1)
GUICtrlCreateListViewItem("16|王五|欢迎使用 AutoIt v3 中文版 !", $ListView1)
_GUICtrlListView_SetColumnWidth($ListView1, 2, 435)
$WorkListViewContextMenu = GUICtrlCreateContextMenu($ListView1)
$WorkExAllBtn = GUICtrlCreateMenuItem("全选", $WorkListViewContextMenu)
GUICtrlCreateMenuItem("", $WorkListViewContextMenu)
$WorkExNoAllBtn = GUICtrlCreateMenuItem("全不选", $WorkListViewContextMenu)
GUICtrlCreateMenuItem("", $WorkListViewContextMenu)
$WorkExOppositeBtn = GUICtrlCreateMenuItem("反选", $WorkListViewContextMenu)
$Button1 = GUICtrlCreateButton("输出选中的编号数组", 112, 504, 145, 41)
GUICtrlSetFont(-1, 11, 400, 0, "微软雅黑")
$Input1 = GUICtrlCreateInput("", 264, 505, 417, 38)
GUICtrlSetFont(-1, 17, 400, 0, "微软雅黑")
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $ilParam)
Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
Local $tagNMHDR = DllStructCreate("int;int;int", $ilParam)
If @error Then Return $GUI_RUNDEFMSG
$IDFrom = DllStructGetData($tagNMHDR, 2)
$Event = DllStructGetData($tagNMHDR, 3)
$tagNMHDR = 0
Switch $IDFrom;选择产生事件的控件
Case $ListView1
Switch $Event; 选择产生的事件
Case $NM_CLICK ; 左击
;~ ...
;MsgBox($MB_SYSTEMMODAL, "消息", "项目数: " & _GUICtrlListView_GetItemCount($ListView1))
$Index = _GUICtrlListView_GetSelectedIndices($ListView1)
If Not StringLen($Index) Then Return ;这里用以判断是否选定了ListViewItem
$iID = _GUICtrlListView_GetItemText($ListView1, Number(_GUICtrlListView_GetSelectedIndices($ListView1)), 0)
If _GUICtrlListView_GetItemChecked($ListView1, $Index) = False Then
_GUICtrlListView_SetItemChecked($ListView1, $Index)
;_GUICtrlListView_SetItemSelected($ListView1, $Index)
Else
If _GUICtrlListView_GetItemChecked($ListView1, $Index) = True Then _GUICtrlListView_SetItemChecked($ListView1, $Index, False)
EndIf
Case $NM_DBLCLK ; 双击全选checkbox
;~ ...
;If _GUICtrlListView_GetItemChecked($ListView1, -1) = False Then _GUICtrlListView_SetItemChecked($ListView1, -1, True)
Case $NM_RCLICK ; 右击
;~ ...
EndSwitch
EndSwitch
;Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY