Jump to content

Refresh ListView coloring issue after values changed


Go to solution Solved by DavProg,

Recommended Posts

Posted

Hi everyone,

I'm a newbie on this forum, so please be considerate. Thank you. I've been reading a lot on it, though, and am very grateful for the many useful tips/snippets found.

I've been developing an AutoIT script that handles Excel data to be inserted in SAP. In between, there is a GUI that, among others, uses a ListView. In the ListView the data is colored green if the value in BCE/RRN is identical to UpValue, but red if it is not. Upon double-clicking in BCE/RRN certain values get copied into UpValue. This means the value in BCE/RRN and UpValue becomes identical, so the color of the row should turn green... it does not however, and I know it will not by itself, and I have been experimenting with _GUICtrlListView_RedrawItems as well as with $CDDS_POSTPAINT and co, but to no avail. I prefer not the use a virtual listview or overly stuffed UDF's as that is beyond the scope of what I want to reach. I have also noticed the coloring flickers and the colors disappear (turn white) when clicking on a button (functionality removed), so I guess I may have an ordering problem in my code.

I would be very happy if someone could have a look at my code and maybe point out where the error/solution could be. Most likely in the "Region ### _COLOR_ARRAY() function" and/or the "Region ### WM_NOTIFY function"

Thanks in advance.

Davy

Partial script, stripped of all unnecessary parts :

; Standard includes

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Constants.au3>
#include <ColorConstants.au3>
#include <GuiListView.au3>
#include <GuiRichEdit.au3>

#Region ### FED categories ###

Const $sFED1 = "FED1"
Const $sFED2 = "FED2"
Const $sFED3 = "FED3"
Const $sFED4 = "FED4"
Const $sFED5 = "FED5"
Const $sFED6 = "FED6"
Const $sFED7 = "FED7"

#EndRegion ### FED categories ###

Global $g_hListView                                                ; Global handler for ListView for the comparison pane

; Create the GUI

Global $hPaneGUI                                                ; GUI handler for the pane window
Local $hWidth = 1340, $hHeight = 600                            ; Initial window size
$hPaneGUI = GUICreate("Client Validation", $hWidth, $hHeight, -1, -1, -1)

; 1. BCE/RRN INFO WINDOW

; Determine positions, width and height of Info window
Local $iX_Info = 2
Local $iY_Info = 2
Local $iInfo_Wd = Int(($hWidth / 2) - 4)
Local $iInfo_Ht = $hHeight - 4

; Create BCE/RRN Info window
Global $hInfo = _GUICtrlRichEdit_Create($hPaneGUI, "", $iX_Info, $iY_Info, $iInfo_Wd, $iInfo_Ht, BitOR($ES_MULTILINE, $ES_READONLY, $WS_VSCROLL))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")                         ; Register WM_NOTIFY function for Windows Message ID $WM_NOTIFY to open URLS
_GUICtrlRichEdit_SetEventMask($hInfo, $ENM_LINK)                ; Look for notification of link clicks
_GUICtrlRichEdit_AutoDetectURL($hInfo, True)                    ; Enable automatic detection of URLS

; 2. LISTVIEW WINDOW

; Determine positions, width and height of ListView window
Local $iX_LV = Int(($hWidth / 2) + 2)
Local $iY_LV = 2
Local $iLV_Wd = Int(($hWidth / 2) - 4)
Local $iLV_Ht = Int((($hHeight / 3) * 2) - 22)

; Create the ListView window
Global $g_hListView = _GUICtrlListView_Create($hPaneGUI, "", $iX_LV, $iY_LV, $iLV_Wd, $iLV_Ht)
_GUICtrlListView_SetExtendedListViewStyle($g_hListView, BitOR($LVS_EX_BORDERSELECT, $LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_ONECLICKACTIVATE, $LVS_EX_TWOCLICKACTIVATE))
_GUICtrlListView_SetItemPosition($g_hListView, 0, $iX_LV, $iY_LV)

; Determine width and positions of the array columns
Local $iColumn_Wd = Int($iLV_Wd / 4)
$iX_Column_1 = $iX_LV
$iX_Column_2 = $iX_LV + $iColumn_Wd
$iX_Column_3 = $iX_LV + ($iColumn_Wd * 2)
$iX_Column_4 = $iX_LV + ($iColumn_Wd * 3)

; Add columns
Global $hColumn_1 = _GUICtrlListView_InsertColumn($g_hListView, 0, "Label", $iColumn_Wd)
Global $hColumn_2 = _GUICtrlListView_InsertColumn($g_hListView, 1, "UpValue", $iColumn_Wd)
Global $hColumn_3 = _GUICtrlListView_InsertColumn($g_hListView, 2, "BCE/RRB", $iColumn_Wd)
Global $hColumn_4 = _GUICtrlListView_InsertColumn($g_hListView, 3, "Excel", $iColumn_Wd)

; Set array limit
_GUICtrlListView_SetItemCount($g_hListView, 16)

; 3. BUTTONS

; Determine positions, width and height of 3 buttons
Local $Xi_Button_1 = Int(($hWidth / 2) + 7)
Local $iX_Button_2 = Int(($hWidth / 2) + 92)
Local $iX_Button_3 = Int(($hWidth / 2) + 177)
Local $iY_Button = Int((($hHeight / 3) * 2) - 15)
Local $iButton_Ht = 30
Local $iButton_Wd = 80

; Create 3 buttons
Global $hButton_1_Validate = GUICtrlCreateButton("Validate", $Xi_Button_1, $iY_Button, $iButton_Wd, $iButton_Ht)     ; Validate the data in the UpValue part of the comparison pane
GUICtrlSetResizing($hButton_1_Validate, $GUI_DOCKAUTO)
Global $hButton_2_Reset = GUICtrlCreateButton("Reset", $iX_Button_2, $iY_Button, $iButton_Wd, $iButton_Ht)            ; Reset the data in the UpValue part of the comparison pane
GUICtrlSetResizing($hButton_2_Reset, $GUI_DOCKAUTO)
Global $hButton_3_Refresh = GUICtrlCreateButton("Refresh", $iX_Button_3, $iY_Button, $iButton_Wd, $iButton_Ht)            ; Reset the data in the UpValue part of the comparison pane
GUICtrlSetResizing($hButton_3_Refresh, $GUI_DOCKAUTO)

; 4. EDIT SECTION

; Determine positions, width and height of the Edit section
Local $iX_Edit = Int(($hWidth / 2) + 2)
Local $iY_Edit = Int((($hHeight / 3) * 2) + 20)
Local $iEdit_Wd = Int(($hWidth / 2) - 6)
Local $iEdit_Ht = Int((($hHeight / 3) * 1) - 24)

; Create the Edit section
Local $hEdit = GUICtrlCreateEdit("", $iX_Edit, $iY_Edit, $iEdit_Wd, $iEdit_Ht)
GUICtrlSetResizing($hEdit, $GUI_DOCKAUTO)

; Fill the array for the ListView with data based on the IDType

; TEST DATA*******************************************************

Global $sIDTypeFromExcel = "Person"
; Global $sIDTypeFromExcel = "Company_BCE"
; Global $sIDTypeFromExcel = "Company_ESTA"

Global $userLanguage = "NL"
; Global $userLanguage = "FR"

Global $sFed
Global $sFirstName
Global $sLastName
Global $sCompanyName
Global $sBCEFromExcel
Global $sEstaFromExcel
Global $sRRNFromExcel
Global $sLangFromExcel
Global $sNameFromExcel
Global $sLegalFormFromExcel
Global $sVATFromExcel
Global $sStreetFromExcel
Global $sHouseFromExcel
Global $sAptFromExcel
Global $sPostcodeFromExcel
Global $sCityFromExcel
Global $sCountryFromExcel
Global $sSearchFromExcel
Global $sIBANFromExcel
Global $sBICFromExcel
Global $sBankKeyFromExcel
Global $sBankCountryFromExcel
Global $sContactFirstNameFromExcel
Global $sContactLastNameFromExcel
Global $sContactEmailFromExcel

Global $sStatusFromJson = ""
Global $sFedFromJson = ""
Global $sRRNFromJson = ""
Global $sFirstNameFromJson = ""
Global $sLastNameFromJson = ""
Global $sStreetFromJson = ""
Global $sHouseFromJson = ""
Global $sAptFromJson = ""
Global $sPostcodeFromJson = ""
Global $sCityFromJson = ""
Global $sBCEFromJson = ""
Global $sCompanyNameFromJson = ""
Global $sLegalFormFromJson = ""
Global $sVATFromJson = ""
Global $sEstaFromJson = ""

If $sIDTypeFromExcel = "Person" Then
    $sFed = "Fed3"
    $sLangFromExcel = "FR"
    $sRRNFromExcel = "88081100000"
    $sFirstName = "Christel"
    $sLastName = "Test"
    $sStreetFromExcel = "Rue du Loin"
    $sHouseFromExcel = "10"
    $sAptFromExcel = "1"
    $sPostcodeFromExcel = "4200"
    $sCityFromExcel = "Seraing"
    $sCountryFromExcel = "BE"
    $sIBANFromExcel = ""
    $sBICFromExcel = ""
    $sStatusFromJson = "Levend"
    $sFedFromJson = ""
    $sRRNFromJson = "88081100000"
    $sFirstNameFromJson = "Christel Alison Hubert"
    $sLastNameFromJson = "Test"
    $sStreetFromJson = "Rue des Prez"
    $sHouseFromJson = "22"
    $sAptFromJson = ""
    $sPostcodeFromJson = "4500"
    $sCityFromJson = "Huy"
ElseIf $sIDTypeFromExcel = "Company_BCE" Or $sIDTypeFromExcel = "Company_ESTA" Then
    $sFed = "Fed1"
    $sLangFromExcel = "NL"
    $sBCEFromExcel = "0000033333"
    $sCompanyName = "OFFICE VAN ADVOCATEN"
    $sLegalFormFromExcel = "Commanditaire vennootschap"
    $sVATFromExcel = "BE0000033333"
    $sEstaFromExcel = "2222002222"
    $sStreetFromExcel = "Dorpstraat"
    $sHouseFromExcel = "10"
    $sAptFromExcel = ""
    $sPostcodeFromExcel = "2800"
    $sCityFromExcel = "Mechelen"
    $sCountryFromExcel = "BE"
    $sIBANFromExcel = "BE11166622233344"
    $sBICFromExcel = "BBRUBEBB"
    $sStatusFromJson = "Actief"
    $sFedFromJson = "Rechtspersoon"
    $sBCEFromJson = "0000033333"
    $sCompanyNameFromJson = "ADJUDENTEA"
    $sLegalFormFromJson = "CommV"
    $sVATFromJson = "Sinds 1 januari 2019"
    $sEstaFromJson = "22220022221"
    $sStreetFromJson = "Dorpstraat"
    $sHouseFromJson = "15"
    $sAptFromJson = ""
    $sPostcodeFromJson = "2800"
    $sCityFromJson = "Mechelen"
EndIf

; END TEST DATA*****************************************************

Select

    Case $sIDTypeFromExcel = "Person"

        ; Items to be added as an array to the ListView in case of a physical person
        Local $aItems[14][4]                                    ; Create an array with 14 rows and 4 columns

        ; First column of array: labels

        $aItems[0][0] = "Status"
        $aItems[1][0] = "fedGroup"
        $aItems[2][0] = "supplierLang"
        $aItems[3][0] = "rnNumber"
        $aItems[4][0] = "firstName"
        $aItems[5][0] = "name"
        $aItems[6][0] = "streetName"
        $aItems[7][0] = "houseNumber"
        $aItems[8][0] = "boxNumber"
        $aItems[9][0] = "postalCode"
        $aItems[10][0] = "city"
        $aItems[11][0] = "country"
        $aItems[12][0] = "bankAccount"
        $aItems[13][0] = "bic"

        ; Second column of array: UpValue                   ; Data chosen from RRN/BCE data and Excel file to be copied back to Excel and to SAP

        $aItems[0][1] = "Data received"
        $aItems[1][1] = $sFed
        $aItems[2][1] = $sLangFromExcel
        $aItems[3][1] = $sRRNFromExcel
        $aItems[4][1] = $sFirstName
        $aItems[5][1] = $sLastName
        $aItems[6][1] = $sStreetFromExcel
        $aItems[7][1] = $sHouseFromExcel
        $aItems[8][1] = $sAptFromExcel
        $aItems[9][1] = $sPostcodeFromExcel
        $aItems[10][1] = $sCityFromExcel
        $aItems[11][1] = $sCountryFromExcel
        $aItems[12][1] = $sIBANFromExcel
        $aItems[13][1] = $sBICFromExcel

        ; Third column of array: RRN data

        $aItems[0][2] = $sStatusFromJson
        $aItems[1][2] = ""
        $aItems[2][2] = ""
        $aItems[3][2] = $sRRNFromJson
        $aItems[4][2] = $sFirstNameFromJson
        $aItems[5][2] = $sLastNameFromJson
        $aItems[6][2] = $sStreetFromJson
        $aItems[7][2] = $sHouseFromJson
        $aItems[8][2] = ""
        $aItems[9][2] = $sPostcodeFromJson
        $aItems[10][2] = $sCityFromJson
        $aItems[11][2] = ""
        $aItems[12][2] = ""
        $aItems[13][2] = ""

        ; Fourth column of array: Excel data

        $aItems[0][3] = "Data received"
        $aItems[1][3] = $sFed
        $aItems[2][3] = $sLangFromExcel
        $aItems[3][3] = $sRRNFromExcel
        $aItems[4][3] = $sFirstName
        $aItems[5][3] = $sLastName
        $aItems[6][3] = $sStreetFromExcel
        $aItems[7][3] = $sHouseFromExcel
        $aItems[8][3] = $sAptFromExcel
        $aItems[9][3] = $sPostcodeFromExcel
        $aItems[10][3] = $sCityFromExcel
        $aItems[11][3] = $sCountryFromExcel
        $aItems[12][3] = $sIBANFromExcel
        $aItems[13][3] = $sBICFromExcel

    Case $sIDTypeFromExcel = "Company_BCE" Or $sIDTypeFromExcel = "Company_ESTA"

        ; Items to be added as an array to the ListView in case of a legal person
        Local $aItems[16][4]                                    ; Create an array with 16 rows and 4 columns

        ; First column of array: labels
        $aItems[0][0] = "Status"
        $aItems[1][0] = "fedGroup"
        $aItems[2][0] = "supplierLang"
        $aItems[3][0] = "bceNumber"
        $aItems[4][0] = "companyName"
        $aItems[5][0] = "legalForm"
        $aItems[6][0] = "vatNumber"
        $aItems[7][0] = "estaNumber"
        $aItems[8][0] = "streetName"
        $aItems[9][0] = "houseNumber"
        $aItems[10][0] = "boxNumber"
        $aItems[11][0] = "postalCode"
        $aItems[12][0] = "city"
        $aItems[13][0] = "country"
        $aItems[14][0] = "bankAccount"
        $aItems[15][0] = "bic"

        ; Second column of array: UpValue                   ; Data chosen from RRN/BCE data and Excel file to be copied back to Excel and to SAP

        $aItems[0][1] = "Data received"
        $aItems[1][1] = $sFed
        $aItems[2][1] = $sLangFromExcel
        $aItems[3][1] = $sBCEFromExcel
        $aItems[4][1] = $sCompanyName
        $aItems[5][1] = $sLegalFormFromExcel
        $aItems[6][1] = $sVATFromExcel
        $aItems[7][1] = $sEstaFromExcel
        $aItems[8][1] = $sStreetFromExcel
        $aItems[9][1] = $sHouseFromExcel
        $aItems[10][1] = $sAptFromExcel
        $aItems[11][1] = $sPostcodeFromExcel
        $aItems[12][1] = $sCityFromExcel
        $aItems[13][1] = $sCountryFromExcel
        $aItems[14][1] = $sIBANFromExcel
        $aItems[15][1] = $sBICFromExcel

        ; Third column of array: BCE data

        $aItems[0][2] = $sStatusFromJson
        $aItems[1][2] = $sFedFromJson
        $aItems[2][2] = ""
        $aItems[3][2] = $sBCEFromJson
        $aItems[4][2] = $sCompanyNameFromJson
        $aItems[5][2] = $sLegalFormFromJson
        $aItems[6][2] = $sVATFromJson
        $aItems[7][2] = $sEstaFromJson
        $aItems[8][2] = $sStreetFromJson
        $aItems[9][2] = $sHouseFromJson
        $aItems[10][2] = $sAptFromJson
        $aItems[11][2] = $sPostcodeFromJson
        $aItems[12][2] = $sCityFromJson
        $aItems[13][2] = ""
        $aItems[14][2] = ""
        $aItems[15][2] = ""

        ; Fourth column of array: Excel data

        $aItems[0][3] = "Data received"
        $aItems[1][3] = $sFed
        $aItems[2][3] = $sLangFromExcel
        $aItems[3][3] = $sBCEFromExcel
        $aItems[4][3] = $sCompanyName
        $aItems[5][3] = $sLegalFormFromExcel
        $aItems[6][3] = $sVATFromExcel
        $aItems[7][3] = $sEstaFromExcel
        $aItems[8][3] = $sStreetFromExcel
        $aItems[9][3] = $sHouseFromExcel
        $aItems[10][3] = $sAptFromExcel
        $aItems[11][3] = $sPostcodeFromExcel
        $aItems[12][3] = $sCityFromExcel
        $aItems[13][3] = $sCountryFromExcel
        $aItems[14][3] = $sIBANFromExcel
        $aItems[15][3] = $sBICFromExcel

EndSelect

; Show the GUI
GUISetState()

#Region ### _COLOR_ARRAY() Function for coloring subitems ###

Func _COLOR_ARRAY()

    ; All colors in BGR

    Global $iWhite = 0xFFFFFF, $iRed = 0x674EFF, $iGreen = 0x32CD32, $iGray = 0xC0C0C0

    ; Color array

    $iRows = UBound($aItems)
    $iCols = UBound($aItems, 2)
    Global $aColors[$iRows][$iCols]

    ; Fill color array

    For $i = 0 To $iRows - 1

        ; Fill the whole array with the color white (i.e. make everything visible)

        For $j = 1 To $iCols - 1
            $aColors[$i][$j] = $iWhite
        Next

        ; Fill the left column, i.e. Label column, with the color gray

        $aColors[$i][0] = $iGray

    Next

    ; Fill the first row, i.e. Status, with the color green if alive or active, else color red

    For $j = 1 To $iCols - 1

        If StringInStr($aItems[0][2], "Levend") Or StringInStr($aItems[0][2], "Vivant") Or StringInStr($aItems[0][2], "Actief") Or StringInStr($aItems[0][2], "Actif") = Not 0 Then
            $aColors[0][$j] = $iGreen
        Else
            $aColors[0][$j] = $iRed
        EndIf

    Next

    ; Fill rows 5 through 11, with the color green if value in BCE/RRN is identical to UpValue, else color red

    For $j = 1 To $iCols - 1

        For $i = 3 To 10

            $aColors[$i][$j] = StringCompare($aItems[$i][1], $aItems[$i][2], 1) = Not 0 ? $iRed : $iGreen

        Next

    Next

EndFunc   ;==>_COLOR_ARRAY

#EndRegion ### _COLOR_ARRAY() Function for coloring subitems ###

_COLOR_ARRAY()

; Add the Array to the ListView

_GUICtrlListView_AddArray($g_hListView, $aItems)
; _WRITEMESSAGETOLOG("GUI Functions - Create Pane GUI - Array added to ListView." & " | " & @ScriptLineNumber)


#Region ### WM_NOTIFY function for click handling ###

Global $iDoubleClickSpeed = DllCall('user32.dll', 'uint', 'GetDoubleClickTime')[0]        ; Variable to check the clickspeed and determine a doubleclick

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)                    ; Windows Control: sent by a common control to its parent window when an event has occurred (https://docs.microsoft.com/en-us/windows/win32/controls/wm-notify)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tEnLink, $iCpMin, $iCpMax, $tMsgFilter, $tInfo
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)                ; Contains information about a notification message (https://docs.microsoft.com/en-us/windows/win32/api/richedit/ns-richedit-nmhdr)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))        ; A window handle to the control sending the message
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")                ; An identifier of the control sending the message
    $iCode = DllStructGetData($tNMHDR, "Code")                    ; A notification code

    Switch $hWndFrom                                            ; Check which window sends the message

        Case $hInfo                                                ; Message from the Info Pane

            Select

                Case $iCode = $EN_LINK                            ; When a URL gets clicked
                    $tMsgFilter = DllStructCreate($tagMSGFILTER, $lParam)
                    If DllStructGetData($tMsgFilter, "msg") = $WM_LBUTTONUP Then
                        $tEnLink = DllStructCreate($tagENLINK, $lParam)
                        $iCpMin = DllStructGetData($tEnLink, "cpMin")
                        $iCpMax = DllStructGetData($tEnLink, "cpMax")
                        $sGetLink = _GUICtrlRichEdit_GetTextInRange($hInfo, $iCpMin, $iCpMax)    ; Get the URL
                        $sCreateParameter = $sGetLink & " --new-tab"    ; Make sure the URL will open in a new tab
                        ShellExecute("chrome.exe", $sCreateParameter)    ; Open the URL in Google Chrome
                        ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - Link " & $sGetLink & " clicked" & " | " & @ScriptLineNumber)
                    EndIf

            EndSelect

        Case $g_hListView                                        ; Message from the ListView in the comparison pane

            Switch $iCode                                        ; When an Item/Subitem gets clicked in the ListView

                Case $NM_CLICK                                  ; Sent by a list-view control when the user clicks an item with the left mouse button
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    Global $iIndex = DllStructGetData($tInfo, "Index")
                    Global $iSubItem = DllStructGetData($tInfo, "SubItem")
                    AdlibRegister('LeftClickEvent', $iDoubleClickSpeed)     ; Verify it was not a double-click event, if not go to the Function 'LeftClickEvent'
                    ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent" & " | " & @ScriptLineNumber)

                Case $NM_DBLCLK                                  ; Sent by a list-view control when the user double-clicks an item with the left mouse button
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    Global $iIndex = DllStructGetData($tInfo, "Index")
                    Global $iSubItem = DllStructGetData($tInfo, "SubItem")
                    DoubleLeftClickEvent()                        ; Go to the Function 'DoubleLeftClickEvent'
                    ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent" & " | " & @ScriptLineNumber)

                Case $NM_CUSTOMDRAW
                    Local $tNMLVCUSTOMDRAW = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
                    Local $dwDrawStage = DllStructGetData($tNMLVCUSTOMDRAW, "dwDrawStage")

                    Switch $dwDrawStage                  ; Holds a value that specifies the drawing stage

                        Case $CDDS_PREPAINT
                            ; Before the paint cycle begins
                            Return $CDRF_NOTIFYITEMDRAW  ; Notify the parent window of any item-related drawing operations

                        Case $CDDS_ITEMPREPAINT
                            ; Before painting an item
                            Return $CDRF_NOTIFYSUBITEMDRAW ; Notify the parent window of any subitem-related drawing operations

                        Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
                            ; Before painting a subitem
                            ;Local $iItem = DllStructGetData($tNMLVCUSTOMDRAW, "dwItemSpec")                ; Item index
                            ;Local $iSubItem = DllStructGetData($tNMLVCUSTOMDRAW, "iSubItem")               ; Subitem index
                            ;DllStructSetData( $tNMLVCUSTOMDRAW, "ClrTextBk", $aColors[$iItem][$iSubItem] ) ; Backcolor of item/subitem
                            DllStructSetData($tNMLVCUSTOMDRAW, "ClrTextBk", $aColors[DllStructGetData($tNMLVCUSTOMDRAW, "dwItemSpec")][DllStructGetData($tNMLVCUSTOMDRAW, "iSubItem")])

                            Return $CDRF_NEWFONT         ; $CDRF_NEWFONT must be returned after changing font or colors

                    EndSwitch

            EndSwitch

    EndSwitch

    Return $GUI_RUNDEFMSG

EndFunc   ;==>WM_NOTIFY

Func LeftClickEvent()                                            ; Interpret a single click with the left mouse button on an Item/Subitem
    AdlibUnRegister('LeftClickEvent')
    Local $sItemSingleClicked = ""
    $sItemSingleClicked = _GUICtrlListView_GetItemText($g_hListView, $iIndex, $iSubItem)    ; Get the text of what was clicked on

    Switch $iSubItem                                            ; Action based on a column

        Case 0
            ; Do nothing in 1st column
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

        Case 1

            ; Select the indexes from the ListView based on the IDType

            Select

                Case $sIDTypeFromExcel = "Person"                ; If the ID Type is a physical person (smaller array with data)

                    Switch $iIndex                                ; Action based on a row

                        Case 0
                            ; Do nothing for 1st row
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 1
                            ; Select a FED category
                            SelectFedCategory()                    ; Go to the Function 'SelectFedCategory' (drop down choice)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 2 To 10
                            ; Allow edit data from rows 2 to 10 in separate window
                            EditSecondColumn($sItemSingleClicked)    ; Go to the Function 'EditSecondColumn' (open input box to edit the text)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 11 To 13
                            ; Do nothing for last 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                    EndSwitch

                Case $sIDTypeFromExcel = "Company_BCE" Or $sIDTypeFromExcel = "Company_ESTA"    ; If the ID Type is a company (larger array with data)

                    Switch $iIndex                                ; Action based on a row

                        Case 0
                            ; Do nothing for first 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 1
                            ; Select a FED category
                            SelectFedCategory()                    ; Go to the Function 'SelectFedCategory' (dropdown list)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 2 To 12
                            ; Allow edit data from rows 2 to 12 in separate window
                            EditSecondColumn($sItemSingleClicked)    ; Go to the Function 'EditSecondColumn' (open input box to edit the text)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 13 To 15
                            ; Do nothing for last 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                    EndSwitch

            EndSelect

        Case 2
            ; Do nothing in 3rd column
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

        Case 3
            ; Do nothing in 4th column
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - LeftClickEvent on " & $sItemSingleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

    EndSwitch

EndFunc   ;==>LeftClickEvent

Func SelectFedCategory()                                        ; Select a FED category

    ; Create a GUI with various controls.
    Local $hFEDGUI = GUICreate("FED category", 300, 50)

    ; Create a combobox control.
    Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 250, 20)

    ; Switch languages to Add items to the combobox in the form of a dropdown list

    Switch $userLanguage
        Case "NL"
            GUICtrlSetData($idComboBox, "FED1 - Onderworpen Belgische BTW|FED2 - Onderworpen Buitenlandse BTW|FED3 - Natuurlijke persoon in België" & _
                    "|FED4 - Natuurlijke persoon in buitenland|FED5 - Dienstverlener zonder BTW|FED6 - Federale administratie" & _
                    "|FED7 - Andere overheidsdienst", "FED1 - Onderworpen Belgische BTW")
        Case "FR"
            GUICtrlSetData($idComboBox, "FED1 - Asujetti à la TVA belge|FED2 - Asujetti à la TVA étrangère|FED3 - Pers. Physique Résidente" & _
                    "|FED4 - Pers. Physique Non-résidente|FED5 - Prestataire services sans TVA|FED6 - Administration Fédérale (PCG)" & _
                    "|FED7 - Autre Admin. Publique", "FED1 - Asujetti à la TVA belge")
    EndSwitch

    ; Display the GUI.
    GUISetState(@SW_SHOW, $hFEDGUI)

    If @error = 0 Then                                            ; Disable and subsequently re-enable the combobox if the window freezes
        WinSetState("FED category", "", @SW_DISABLE)
        Sleep(250)
        WinSetState("FED category", "", @SW_ENABLE)
    EndIf

    Local $sComboRead = ""                                        ; Variable to read the user's choice from the combobox

    While 1                                                        ; Endless loop until the user exits the combobox or makes a choice

        Switch GUIGetMsg()                                        ; Use simple parameter () to interpret the variable

            Case $GUI_EVENT_CLOSE                                ; If we get the CLOSE message from $hFEDGUI
                ExitLoop                                        ; Exit the loop and thus exit the program

            Case $idComboBox                                    ; Combobox to display a dropdown list with FED choices
                $sFed = ""                                        ; Reset the $sFed variable that was previously used to add a tentative FED category
                $sComboRead = GUICtrlRead($idComboBox)            ; Read the user's choice
                ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - SelectFedCategory - Selected " & $sComboRead & " | " & @ScriptLineNumber)

                ; Switch languages to read the combobox

                Switch $userLanguage
                    Case "NL"
                        Switch $sComboRead
                            Case "FED1 - Onderworpen Belgische BTW"
                                _GUICtrlListView_SetItem($g_hListView, "FED1", $iIndex, $iSubItem)
                                $sFed = $sFED1
                            Case "FED2 - Onderworpen Buitenlandse BTW"
                                _GUICtrlListView_SetItem($g_hListView, "FED2", $iIndex, $iSubItem)
                                $sFed = $sFED2
                            Case "FED3 - Natuurlijke persoon in België"
                                _GUICtrlListView_SetItem($g_hListView, "FED3", $iIndex, $iSubItem)
                                $sFed = $sFED3
                            Case "FED4 - Natuurlijke persoon in buitenland"
                                _GUICtrlListView_SetItem($g_hListView, "FED4", $iIndex, $iSubItem)
                                $sFed = $sFED4
                            Case "FED5 - Dienstverlener zonder BTW"
                                _GUICtrlListView_SetItem($g_hListView, "FED5", $iIndex, $iSubItem)
                                $sFed = $sFED5
                            Case "FED6 - Federale administratie"
                                _GUICtrlListView_SetItem($g_hListView, "FED6", $iIndex, $iSubItem)
                                $sFed = $sFED6
                            Case "FED7 - Andere overheidsdienst"
                                _GUICtrlListView_SetItem($g_hListView, "FED7", $iIndex, $iSubItem)
                                $sFed = $sFED7
                        EndSwitch
                    Case "FR"
                        Switch $sComboRead
                            Case "FED1 - Asujetti à la TVA belge"
                                _GUICtrlListView_SetItem($g_hListView, "FED1", $iIndex, $iSubItem)
                                $sFed = $sFED1
                            Case "FED2 - Asujetti à la TVA étrangère"
                                _GUICtrlListView_SetItem($g_hListView, "FED2", $iIndex, $iSubItem)
                                $sFed = $sFED2
                            Case "FED3 - Pers. Physique Résidente"
                                _GUICtrlListView_SetItem($g_hListView, "FED3", $iIndex, $iSubItem)
                                $sFed = $sFED3
                            Case "FED4 - Pers. Physique Non-résidente"
                                _GUICtrlListView_SetItem($g_hListView, "FED4", $iIndex, $iSubItem)
                                $sFed = $sFED4
                            Case "FED5 - Prestataire services sans TVA"
                                _GUICtrlListView_SetItem($g_hListView, "FED5", $iIndex, $iSubItem)
                                $sFed = $sFED5
                            Case "FED6 - Administration Fédérale (PCG)"
                                _GUICtrlListView_SetItem($g_hListView, "FED6", $iIndex, $iSubItem)
                                $sFed = $sFED6
                            Case "FED7 - Autre Admin. Publique"
                                _GUICtrlListView_SetItem($g_hListView, "FED7", $iIndex, $iSubItem)
                                $sFed = $sFED7
                        EndSwitch

                EndSwitch

                ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - SelectFedCategory - FED set to: " & $sFed & " | " & @ScriptLineNumber)

                ExitLoop

        EndSwitch

    WEnd

    ; Delete the FED selection GUI and all controls.
    GUIDelete($hFEDGUI)

EndFunc   ;==>SelectFedCategory

Func EditSecondColumn(ByRef $sItemClicked)                        ; Open an input box to edit the text that was clicked on in the 2nd column

    Global $sEditedSubItem = ""                                    ; Variable to store the edited text

    $sEditedSubItem = InputBox("Edit", "Manual Edit", $sItemClicked, "", 300, 130)    ; Show input box with the text that was clicked on in the 2nd column
    ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - EditSecondColumn - Text for manual editing: " & $sItemClicked & " | " & @ScriptLineNumber)

    If @error = 1 Then                                            ; If the cancel button is pressed

        ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - EditSecondColumn - Editing cancelled" & " | " & @ScriptLineNumber)
        _GUICtrlListView_SetItem($g_hListView, $sItemClicked, $iIndex, $iSubItem)        ; Put the original text back in the ListView

    ElseIf @error = 0 Then                                        ; If OK was pressed

        If StringCompare($sEditedSubItem, $sItemClicked, $STR_CASESENSE) = Not 0 Then   ; If the text was changed (Case sensitive)

            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - EditSecondColumn - Text changed to: " & $sEditedSubItem & " | " & @ScriptLineNumber)
            _GUICtrlListView_SetItem($g_hListView, $sEditedSubItem, $iIndex, $iSubItem) ; Put the variable in the ListView

        Else                                                    ; If the text remained unchanged

            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - EditSecondColumn - Text left unchanged: " & $sItemClicked & " | " & @ScriptLineNumber)
            _GUICtrlListView_SetItem($g_hListView, $sItemClicked, $iIndex, $iSubItem)    ; Put the original text back in the ListView

        EndIf

    EndIf

EndFunc   ;==>EditSecondColumn

Func DoubleLeftClickEvent()                                        ; Interpret a double click with the left mouse button on an Item/Subitem
    AdlibUnRegister('LeftClickEvent')
    Local $sItemDoubleClicked = ""
    $sItemDoubleClicked = _GUICtrlListView_GetItemText($g_hListView, $iIndex, $iSubItem)    ; Get the text of what was clicked on

    Switch $iSubItem                                            ; Action based on a column

        Case 0
            ; Do nothing in 1st column
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

        Case 1
            ; Do nothing in 2nd column
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

        Case 2

            ; Select the indexes from the ListView based on the IDType

            Select

                Case $sIDTypeFromExcel = "Person"                ; If the ID Type is a physical person (smaller array with data)

                    Switch $iIndex                                ; Action based on a row

                        Case 0 To 2
                            ; Do nothing for first 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 3 To 10
                            ; Copy from 3rd column to 2nd column
                            _GUICtrlListView_SetItem($g_hListView, $sItemDoubleClicked, $iIndex, $iSubItem - 1)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - " & $sItemDoubleClicked & " copied from column: " & $iSubItem & " to: " & $iSubItem - 1 & " | " & @ScriptLineNumber)

                        Case 11 To 13
                            ; Do nothing for last 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                    EndSwitch

                Case $sIDTypeFromExcel = "Company_BCE" Or $sIDTypeFromExcel = "Company_ESTA"    ; If the ID Type is a company (larger array with data)

                    Switch $iIndex                                ; Action based on a row

                        Case 0 To 2
                            ; Do nothing for first 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                        Case 3 To 5
                            ; Copy from 3rd column to 2nd column
                            _GUICtrlListView_SetItem($g_hListView, $sItemDoubleClicked, $iIndex, $iSubItem - 1)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - " & $sItemDoubleClicked & " copied from column: " & $iSubItem & " to: " & $iSubItem - 1 & " | " & @ScriptLineNumber)

                        Case 6
                            ; Set VAT number if exists in BCE
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                            Local $sVATSubItem = ""
                            $sVATSubItem = $sItemDoubleClicked

                            If $sVATSubItem = "" Then            ; If nothing is mentioned under VAT at BCE remove VAT
                                _GUICtrlListView_SetItem($g_hListView, $sVATSubItem, $iIndex, $iSubItem - 1)
                                ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - VAT removed" & " | " & @ScriptLineNumber)
                            Else                                ; If VAT 'since...' is mentioned under VAT at BCE add VAT based on BCE number + 'BE'
                                $sVATSubItem = "BE" & $sBCEFromExcel
                                _GUICtrlListView_SetItem($g_hListView, $sVATSubItem, $iIndex, $iSubItem - 1)
                                ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - VAT added: " & $sVATSubItem & " | " & @ScriptLineNumber)
                            EndIf

                        Case 7 To 12
                            ; Copy from 3rd column to 2nd column
                            _GUICtrlListView_SetItem($g_hListView, $sItemDoubleClicked, $iIndex, $iSubItem - 1)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - " & $sItemDoubleClicked & " copied from column: " & $iSubItem & " to: " & $iSubItem - 1 & " | " & @ScriptLineNumber)

                        Case 13 To 15
                            ; Do nothing for last 3 rows
                            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)

                    EndSwitch

            EndSelect

        Case 3
            ; Copy from 4th column to 2nd column
            _GUICtrlListView_SetItem($g_hListView, $sItemDoubleClicked, $iIndex, $iSubItem - 2)
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent on " & $sItemDoubleClicked & " column: " & $iSubItem & " row: " & $iIndex & " | " & @ScriptLineNumber)
            ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - " & $sItemDoubleClicked & " copied from column: " & $iSubItem & " to: " & $iSubItem - 2 & " | " & @ScriptLineNumber)

    EndSwitch

EndFunc   ;==>DoubleLeftClickEvent

#EndRegion ### WM_NOTIFY function for click handling ###

While 1
    $idMsg = GUIGetMsg()
    Select
        Case $idMsg = $GUI_EVENT_CLOSE
            MsgBox($MB_SYSTEMMODAL, "", "Dialog was closed")
            ExitLoop
        Case $idMsg = $hButton_1_Validate
            MsgBox($MB_SYSTEMMODAL, "", "Validate pressed", 2)
        Case $idMsg = $hButton_2_Reset
            MsgBox($MB_SYSTEMMODAL, "", "Reset pressed", 2)
        Case $idMsg = $hButton_3_Refresh
            MsgBox($MB_SYSTEMMODAL, "", "Refresh pressed", 2)
    EndSelect
WEnd

 

Posted
1 hour ago, DavProg said:

Partial script, stripped of all unnecessary parts

Sorry to say but there is a lot of unnecessary parts in your code.  It would greatly help us if you could reduce it to its very strict minimum (should be about 40-50 lines of code).  You could use this example to start with and to show us your issue.

Posted

The problem with red/green subitems is trivial. The listview background colors in $aColors are not updated when the listview subitem texts are updated.

Posted
10 hours ago, LarsJ said:

The problem with red/green subitems is trivial. The listview background colors in $aColors are not updated when the listview subitem texts are updated.

Hi Lars, thanks for mentionning that. Having looked at your ListView UDF's, I can say you're an expert in this matter and I greatly appreciate your input. The UDF's are over my head, though, at this point. I've been using AutoIT for only a few months and I try to keep things as simple as possible.

I have been trying to figure out at what point and in which way I should be doing updates of the coloring. I've been inserting the _COLOR_ARRAY function at different stages, adding Redraw with Winapi, but I don't seem to capture exactly when and where it should happen.

Posted

Test initially with simple code like this:

Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
  $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
  Global $iIndex = DllStructGetData($tInfo, "Index")
  Global $iSubItem = DllStructGetData($tInfo, "SubItem")
  DoubleLeftClickEvent() ; Go to the Function 'DoubleLeftClickEvent'
  $aColors[$iIndex][1] = $iGreen
  $aColors[$iIndex][2] = $iGreen
  $aColors[$iIndex][3] = $iGreen

Then try to find out why the _COLOR_ARRAY() function does not work automatically. It's connected to $aItems array. When arrays are used in this way, they must be updated when the listview subitem texts are updated.

Posted
57 minutes ago, LarsJ said:

Test initially with simple code like this:

Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
  $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
  Global $iIndex = DllStructGetData($tInfo, "Index")
  Global $iSubItem = DllStructGetData($tInfo, "SubItem")
  DoubleLeftClickEvent() ; Go to the Function 'DoubleLeftClickEvent'
  $aColors[$iIndex][1] = $iGreen
  $aColors[$iIndex][2] = $iGreen
  $aColors[$iIndex][3] = $iGreen

Then try to find out why the _COLOR_ARRAY() function does not work automatically. It's connected to $aItems array. When arrays are used in this way, they must be updated when the listview subitem texts are updated.

Thanks Lars, I'll check that out tomorrow. Had been adding a lot of SAP related script today (quite tough when you hit unexpected character limitations in filters).

I tried adding coloring indications to $NM_DBLCLK before, but not in the way you suggest. Quite interesting. But yes, because I use gets and sets for the subitem texts I may have an issue at that level.

  • Solution
Posted
On 7/7/2022 at 4:42 PM, LarsJ said:

Test initially with simple code like this:

Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
  $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
  Global $iIndex = DllStructGetData($tInfo, "Index")
  Global $iSubItem = DllStructGetData($tInfo, "SubItem")
  DoubleLeftClickEvent() ; Go to the Function 'DoubleLeftClickEvent'
  $aColors[$iIndex][1] = $iGreen
  $aColors[$iIndex][2] = $iGreen
  $aColors[$iIndex][3] = $iGreen

Then try to find out why the _COLOR_ARRAY() function does not work automatically. It's connected to $aItems array. When arrays are used in this way, they must be updated when the listview subitem texts are updated.

Taking into account @LarsJ suggestion about inserting color changes at the level of $NM_DBLCLK and using  _GUICtrlListView_GetItemText() to compare the contents of the changed ListView (since the actual array doesn't change, so comparing the $iIndex/$iSubitem values of $aItems didn't show any changes), delivered a pretty simple solution that works to set the colors after a change with double-click.

Case $NM_DBLCLK                                  ; Sent by a list-view control when the user double-clicks an item with the left mouse button
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    Global $iIndex = DllStructGetData($tInfo, "Index")
                    Global $iSubItem = DllStructGetData($tInfo, "SubItem")
                    DoubleLeftClickEvent()                        ; Go to the Function 'DoubleLeftClickEvent'
                    ; _WRITEMESSAGETOLOG("GUI Functions - WM_NOTIFY - DoubleLeftClickEvent" & " | " & @ScriptLineNumber)

                    $sUpValue = StringStripWS(_GUICtrlListView_GetItemText($g_hListView, $iIndex, 1), 1+2+4)
                    $sBCE_RRN = StringStripWS(_GUICtrlListView_GetItemText($g_hListView, $iIndex, 2), 1+2+4)

                    If StringCompare($sUpValue, $sBCE_RRN, 1) = 0 Then
                        $aColors[$iIndex][1] = $iGreen
                        $aColors[$iIndex][2] = $iGreen
                        $aColors[$iIndex][3] = $iGreen
                    Else
                        $aColors[$iIndex][1] = $iRed
                        $aColors[$iIndex][2] = $iRed
                        $aColors[$iIndex][3] = $iRed
                    EndIf

Thanks again @LarsJ for the practical suggestion.

The full version I'll be implementing will of course use Selects and Switches to make precise comparisons/choices possible.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...