找回密码
 加入
搜索
查看: 4945|回复: 8

[系统综合] GuiListView全选反选问题

  [复制链接]
发表于 2012-1-15 23:15:02 | 显示全部楼层 |阅读模式
本帖最后由 那片叶子 于 2012-1-15 23:17 编辑

大家帮帮忙!怎么全选和反选! 如果行的话,能否帮忙看能否制定选择啊
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiListBox.au3>
#Include <GuiListView.au3>
#Include <GuiImageList.au3>
$x = 730
$y = 571
$Form1 = GUICreate("Form1", $x, $y, 193, 125,$WS_OVERLAPPEDWINDOW)

$List1 = GUICtrlCreateListView("", 0, 0, $x-70, $y-60)
_GUICtrlListView_SetExtendedListViewStyle($List1, BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
$Button3 = GUICtrlCreateButton("运行", 670, 10, 50, 25)
$Menu = GUICtrlCreateContextMenu($List1)
$About = GUICtrlCreateMenuItem("执行",$Menu)
$Refresh = GUICtrlCreateMenuItem("刷新",$Menu)

GUICtrlSetStyle($List1,BitOR($LVS_NOCOLUMNHEADER,$LVS_ICON,$LVS_SORTASCENDING,$LVS_SINGLESEL))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$Image = _GUIImageList_Create(32,32,5)
For $i = 1 To 50
        _GUIImageList_AddIcon($Image,"c:\WINDOWS\system32\shell32.dll",$i,True)
        _GUICtrlListView_SetImageList($List1,$Image,0)
        _GUICtrlListView_AddItem($List1,"第"&$i&"个",$i-1) 
Next

GUISetState(@SW_SHOW)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $About
                        $Index = _GUICtrlListView_GetSelectedIndices($List1)
                        If $Index <> "" Then
                                $L_Name = _GUICtrlListView_GetItemText($List1,Int($Index),0)
                                MsgBox(0,"鼠标右键",$Index&"你执行的是  "&$L_Name)
                        EndIf
                Case $Refresh
                        _GUICtrlListView_Arrange($List1,2)
                Case $GUI_EVENT_MAXIMIZE
                        _GUICtrlListView_Arrange($List1,2)
                Case $GUI_EVENT_RESTORE
                        _GUICtrlListView_Arrange($List1,2)
                Case $GUI_EVENT_RESIZED
                        _GUICtrlListView_Arrange($List1,2)
                                Case $Button3
                        For $i = _GUICtrlListView_GetTopIndex($List1) To _GUICtrlListView_GetCounterPage($List1);列表视图最高可见项的索引 to 可见项索引的总数

                                $Checked = _GUICtrlListView_GetItemChecked($List1, $i);返回列表视图控件项目的选中状态
                                If $Checked = 1 Then
                                        MsgBox(266304, "提示",$i)
                                EndIf
                        Next
        EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo ,$Menu
        $hWndListView = $List1
        If Not IsHWnd($List1) Then $hWndListView = GUICtrlGetHandle($List1)
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
                Case $hWndListView
                        Switch $iCode
                                Case $NM_DBLCLK ; 响应 List1 范围内的双击
                                        $Index = _GUICtrlListView_GetSelectedIndices($hWndListView)
                                        If $Index <> "" Then
                                                $L_Name = _GUICtrlListView_GetItemText($hWndListView,$Index)
                                                MsgBox(0,"响应双击","你选择的是  "&$L_Name)
                                        EndIf
                        EndSwitch
                EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc  

本帖子中包含更多资源

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

×
发表于 2012-1-16 01:30:57 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListBox.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
$x = 730
$y = 571
$Form1 = GUICreate("Form1", $x, $y, 193, 125, $WS_OVERLAPPEDWINDOW)

$List1 = GUICtrlCreateListView("", 0, 0, $x - 70, $y - 60)
_GUICtrlListView_SetExtendedListViewStyle($List1, BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
$Button3 = GUICtrlCreateButton("运行", 670, 10, 50, 25)
$Button4 = GUICtrlCreateButton("全选", 670, 40, 50, 25)
$Button5 = GUICtrlCreateButton("反选", 670, 70, 50, 25)
$Menu = GUICtrlCreateContextMenu($List1)
$About = GUICtrlCreateMenuItem("执行", $Menu)
$Refresh = GUICtrlCreateMenuItem("刷新", $Menu)

GUICtrlSetStyle($List1, BitOR($LVS_NOCOLUMNHEADER, $LVS_ICON, $LVS_SORTASCENDING, $LVS_SINGLESEL))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$Image = _GUIImageList_Create(32, 32, 5)
For $i = 1 To 50
        _GUIImageList_AddIcon($Image, "c:\WINDOWS\system32\shell32.dll", $i, True)
        _GUICtrlListView_SetImageList($List1, $Image, 0)
        _GUICtrlListView_AddItem($List1, "第" & $i & "个", $i - 1)
Next

GUISetState(@SW_SHOW)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $About
                        $Index = _GUICtrlListView_GetSelectedIndices($List1)
                        If $Index <> "" Then
                                $L_Name = _GUICtrlListView_GetItemText($List1, Int($Index), 0)
                                MsgBox(0, "鼠标右键", $Index & "你执行的是  " & $L_Name)
                        EndIf
                Case $Refresh
                        _GUICtrlListView_Arrange($List1, 2)
                Case $GUI_EVENT_MAXIMIZE
                        _GUICtrlListView_Arrange($List1, 2)
                Case $GUI_EVENT_RESTORE
                        _GUICtrlListView_Arrange($List1, 2)
                Case $GUI_EVENT_RESIZED
                        _GUICtrlListView_Arrange($List1, 2)
                Case $Button3
                        For $i = _GUICtrlListView_GetTopIndex($List1) To _GUICtrlListView_GetCounterPage($List1);列表视图最高可见项的索引 to 可见项索引的总数

                                $Checked = _GUICtrlListView_GetItemChecked($List1, $i);返回列表视图控件项目的选中状态
                                If $Checked = 1 Then
                                        MsgBox(266304, "提示", $i)
                                EndIf
                        Next
                Case $Button4
                        _GUICtrlListView_SetItemChecked($List1, -1)
                Case $Button5
                        For $i = 0 To _GUICtrlListView_GetItemCount($List1) - 1
                                If _GUICtrlListView_GetItemChecked($List1, $i) Then
                                        _GUICtrlListView_SetItemChecked($List1, $i, False)
                                Else
                                        _GUICtrlListView_SetItemChecked($List1, $i, True)
                                EndIf
                        Next
        EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $Menu
        $hWndListView = $List1
        If Not IsHWnd($List1) Then $hWndListView = GUICtrlGetHandle($List1)
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
                Case $hWndListView
                        Switch $iCode
                                Case $NM_DBLCLK ; 响应 List1 范围内的双击
                                        $Index = _GUICtrlListView_GetSelectedIndices($hWndListView)
                                        If $Index <> "" Then
                                                $L_Name = _GUICtrlListView_GetItemText($hWndListView, $Index)
                                                MsgBox(0, "响应双击", "你选择的是  " & $L_Name)
                                        EndIf
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

评分

参与人数 3金钱 +40 贡献 +3 收起 理由
lpxx + 10 + 3 很棒的见解
楼上风云 + 10
afan + 20

查看全部评分

发表于 2012-1-16 09:19:15 | 显示全部楼层
学习了,下载试用
发表于 2012-1-16 12:30:27 | 显示全部楼层
回复 1# 那片叶子
2楼正解。
发表于 2012-1-16 12:56:29 | 显示全部楼层
很不错谢谢了。
 楼主| 发表于 2012-1-16 13:09:32 | 显示全部楼层
谢谢了!
发表于 2012-1-16 14:18:31 | 显示全部楼层
学习了,下载试用
发表于 2012-1-16 15:06:35 | 显示全部楼层
回复 2# 298311657


不错,好像AFAN以前也有过类似的完整例子!
发表于 2012-1-16 21:15:58 | 显示全部楼层
回复 2# 298311657
来学习了,谢谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-11 16:30 , Processed in 0.100597 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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