Jump to content
Sign in to follow this  

Listview Checkbox doesn't update

Recommended Posts


I'm writing a custom script to help compile data together for monitoring customer databases. On the listview control, I'm trying to use the checkbox feature to allow for ignoring alerts from specific databases. For some reason, the code recognizes the checkboxes in a certain state and execute the code as expected, except they never update the state of the checkbox to the other state (unchecked) or vice versa. I'm using a modified WM_NOTIFY function, could that be the reason it's not recognizing when I call _GUICtrlListView_SetItemChecked, or am I just doing something completely wrong in my code? Code and picture example below...




Func LVControl($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $CurrentIgnoreList
    $hWndListView = $ListView
    If Not IsHWnd($ListView) Then $hWndListView = GUICtrlGetHandle($ListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    $SelectedIndex = DllStructGetData($tInfo, "Index")
                    ConsoleWrite("-->Index:" & @TAB & $SelectedIndex & @LF)
                    If $SelectedIndex = -1 Then ContinueCase
                    ;    <add key="NCPDPIgnoreList" value="3684366,5725342,1485122,1484663,2519152,1406138,1044243,0139469,4613039,0357168,5126760,2784177,2784165,5132181"/>
                    ;Get checked state of selected index
                    If _GUICtrlListView_GetItemChecked($ListView, $SelectedIndex) = True Then
                        ;It is checked, uncheck the box
                        _GUICtrlListView_SetItemChecked($ListView, $SelectedIndex, False)
                        ;remove from ignore list
                        $CurrentIgnoreList = _GetIgnoreList()
                        For $q = 1 To $CurrentIgnoreList[0]
                            If $CurrentIgnoreList[$q] = $dbArray[$SelectedIndex][3] Then
                                _ArrayDelete($CurrentIgnoreList, $q)
                                $NewString = '    <add key="NCPDPIgnoreList" value="'
                                For $z = 1 To UBound($CurrentIgnoreList) - 1
                                    $NewString = $NewString & $CurrentIgnoreList[$z] & ','
                                $NewString = StringTrimRight($NewString, 1) & '"/>'
                                _FileWriteToLine(IniRead($Ini, "SET", "SSDBMonitor", "\\\c$\Program Files (x86)\RNA\SSDBMonitor") & "\SSDBMonitor.exe.config", 13, $NewString, True)
                    Else ;False
                        ;It is unchecked, check the box
                        _GUICtrlListView_SetItemChecked($ListView, $SelectedIndex, True)
                        ;add it to the ignore list
                        $CurrentIgnoreList = _GetIgnoreList()
                        $NewString = '    <add key="NCPDPIgnoreList" value="'
                        For $q = 1 To $CurrentIgnoreList[0]
                            $NewString = $NewString & $CurrentIgnoreList[$q] & ','
                        $NewString = $NewString & $dbArray[$SelectedIndex][3] & '"/>'
                        _FileWriteToLine(IniRead($Ini, "SET", "SSDBMonitor", "\\\c$\Program Files (x86)\RNA\SSDBMonitor") & "\SSDBMonitor.exe.config", 13, $NewString, True)
EndFunc   ;==>WM_NOTIFY


Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this