找回密码
 加入
搜索
查看: 1261|回复: 2

[AU3基础] [已解决]ListView如何msgbox一個一個帶出所有的$hListView

[复制链接]
发表于 2016-12-5 15:25:47 | 显示全部楼层 |阅读模式
本帖最后由 ipmitool 于 2016-12-5 15:44 编辑

請問下面範例有四個
  GUICtrlCreateListViewItem("OSInstallation", $hListView)
  GUICtrlCreateListViewItem("1k-AC Power Cycle", $hListView)
  GUICtrlCreateListViewItem("1k-WarmBoot", $hListView)
  GUICtrlCreateListViewItem("ToolpackageTest", $hListView)

我如何點下execute的時候就 分別 msgbox出這四個hlistview
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
#include <MsgBoxConstants.au3>


Global $GUI, $hListView, $Up, $Down, $msg

$GUI = GUICreate("UP/Down ListView", 300, 340)
$hListView = GUICtrlCreateListView ("Test Case                    ", 10, 10, 220, 220)



  GUICtrlCreateListViewItem("OSInstallation", $hListView)
  GUICtrlCreateListViewItem("1k-AC Power Cycle", $hListView)
  GUICtrlCreateListViewItem("1k-WarmBoot", $hListView)
  GUICtrlCreateListViewItem("ToolpackageTest", $hListView)



Global $hCMenu = GUICtrlCreateContextMenu($hListView)
Global $hCMenuText1 = GUICtrlCreateMenuItem("Delete", $hCMenu)
Global $hCMenuText2 = GUICtrlCreateMenuItem("Show", $hCMenu)
Global $sItemText     ;this will store the text of the last right-clicked item.



$Up = GUICtrlCreateButton("Up", 240, 30, 40, 20)
$Down = GUICtrlCreateButton("Down", 240, 60, 40, 20)
$Execute = GUICtrlCreateButton("Execute", 100, 240, 70, 30)


While 1


GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW, $GUI)


    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Up
            If UD($hListView, 0) = -1 Then MsgBox(64, "Top", "Item is at the top of the ListView", 1)
        Case $Down
            If UD($hListView, 1) = -1 Then MsgBox(64, "Bottom", "Item is at the bottom of the ListView", 1)
                case $Execute
                        MsgBox(0, "listview item", "...", 1)




                case $hCMenuText1 ;delete
                        _GUICtrlListView_DeleteItemsSelected($hListView)

                case $hCMenuText2 ;show
                        _ShowText()

    EndSwitch
Wend

Func UD($iCID, $iFlag)
    Local $iCnt, $sCur,$iCur, $sNxt, $iNew = -1
    $iCur = _GUICtrlListView_GetNextItem($iCID)
    $sCur = _GUICtrlListView_GetItemText($iCID, $iCur)
    $iCnt = _GUICtrlListView_GetItemCount($iCID)
    If $iFlag And $iCur < ($iCnt - 1) Then
        $iNew = $iCur + 1
    ElseIf Not $iFlag And $iCur > 0 Then
        $iNew = $iCur - 1
    EndIf
    If $iNew = -1 Then Return $iNew
    $sNxt = _GUICtrlListView_GetItemText($iCID, $iNew)
    _GUICtrlListView_SetItemText($iCID, $iNew, $sCur)
    _GUICtrlListView_SetItemText($iCID, $iCur, $sNxt)
    _GUICtrlListView_SetItemSelected($iCID, $iNew, 1)
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_RCLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $Index = DllStructGetData($tInfo, "Index")
                    $SubItem = DllStructGetData($tInfo, "SubItem")
                    $sItemText =  _GUICtrlListView_GetItemText($hWndListView, $Index, $SubItem)
             EndSwitch
        EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

Func _ShowText()
    If $sItemText <> "" Then MsgBox(0,"Name", $sItemText)
EndFunc
发表于 2016-12-5 15:36:46 | 显示全部楼层
回复 1# ipmitool

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
#include <MsgBoxConstants.au3>


Global $GUI, $hListView, $Up, $Down, $msg

$GUI = GUICreate("UP/Down ListView", 300, 340)
$hListView = GUICtrlCreateListView ("Test Case                    ", 10, 10, 220, 220)



  GUICtrlCreateListViewItem("OSInstallation", $hListView)
  GUICtrlCreateListViewItem("1k-AC Power Cycle", $hListView)
  GUICtrlCreateListViewItem("1k-WarmBoot", $hListView)
  GUICtrlCreateListViewItem("ToolpackageTest", $hListView)



Global $hCMenu = GUICtrlCreateContextMenu($hListView)
Global $hCMenuText1 = GUICtrlCreateMenuItem("Delete", $hCMenu)
Global $hCMenuText2 = GUICtrlCreateMenuItem("Show", $hCMenu)
Global $sItemText     ;this will store the text of the last right-clicked item.



$Up = GUICtrlCreateButton("Up", 240, 30, 40, 20)
$Down = GUICtrlCreateButton("Down", 240, 60, 40, 20)
$Execute = GUICtrlCreateButton("Execute", 100, 240, 70, 30)


While 1


GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW, $GUI)


    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Up
            If UD($hListView, 0) = -1 Then MsgBox(64, "Top", "Item is at the top of the ListView", 1)
        Case $Down
            If UD($hListView, 1) = -1 Then MsgBox(64, "Bottom", "Item is at the bottom of the ListView", 1)
                                case $Execute
                                ;$ColumnCount=_GUICtrlListView_GetColumnCount($hListView)
                                $ItemCount=_GUICtrlListView_GetItemCount($hListView)
                                
                                FOR $i=0 to $ItemCount-1 
                                        ;FOR $j=0 to $ColumnCount-1
                                                MsgBox(0, "listview item", _GUICtrlListView_GetItemTextString($hListView,$i), 1)
                                        ;Next
                                Next


                case $hCMenuText1 ;delete
                        _GUICtrlListView_DeleteItemsSelected($hListView)

                case $hCMenuText2 ;show
                        _ShowText()

    EndSwitch
Wend

Func UD($iCID, $iFlag)
    Local $iCnt, $sCur,$iCur, $sNxt, $iNew = -1
    $iCur = _GUICtrlListView_GetNextItem($iCID)
    $sCur = _GUICtrlListView_GetItemText($iCID, $iCur)
    $iCnt = _GUICtrlListView_GetItemCount($iCID)
    If $iFlag And $iCur < ($iCnt - 1) Then
        $iNew = $iCur + 1
    ElseIf Not $iFlag And $iCur > 0 Then
        $iNew = $iCur - 1
    EndIf
    If $iNew = -1 Then Return $iNew
    $sNxt = _GUICtrlListView_GetItemText($iCID, $iNew)
    _GUICtrlListView_SetItemText($iCID, $iNew, $sCur)
    _GUICtrlListView_SetItemText($iCID, $iCur, $sNxt)
    _GUICtrlListView_SetItemSelected($iCID, $iNew, 1)
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_RCLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $Index = DllStructGetData($tInfo, "Index")
                    $SubItem = DllStructGetData($tInfo, "SubItem")
                    $sItemText =  _GUICtrlListView_GetItemText($hWndListView, $Index, $SubItem)
             EndSwitch
        EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

Func _ShowText()
    If $sItemText <> "" Then MsgBox(0,"Name", $sItemText)
EndFunc

评分

参与人数 1金钱 +40 收起 理由
ipmitool + 40 謝謝!

查看全部评分

 楼主| 发表于 2016-12-5 15:41:32 | 显示全部楼层
回复 2# kk_lee69


    真不愧是馬蓋仙, 我上個廁所的時間你就寫好了...好強啊!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-24 18:46 , Processed in 0.079270 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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