Jump to content
AndyS19

Cannot set just 1 listview column's color

Recommended Posts

I have a listview with 3 columns and I want to set the 3rd column's color based on the item's 'Param' value, but even though I set up for the 3rd column, the entire row always gets the color.

My test code is below, but here is the pertinent code:

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam, $ilParam
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hListView
            Switch $iCode
                Case $NM_CUSTOMDRAW
                    Local $iDrawStage, $tCustDraw
                    $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $ilParam)
                    $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
                    Switch $iDrawStage
                        Case BitOR(0, $CDDS_ITEMPREPAINT) ;, $CDDS_SUBITEM)
                            setItemColor($tCustDraw, $hWndFrom)
                            Return $CDRF_NOTIFYSUBITEMDRAW
                    EndSwitch
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func setItemColor($tCustDraw, $hWnd)
    Local $iIndex, $color, $iSubitem

    $iIndex = DllStructGetData($tCustDraw, 'dwItemSpec') ; item number
    $color = _GUICtrlListView_GetItemParam($hWnd, $iIndex)
    $iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
    
    ; Here, I want to only change the color of the 3rd col, and not the 1st and 2nd cols
    DllStructSetData($tCustDraw, 'iSubItem', 2) ; always use the 3rd column (the 'sample' col)
    
    logmsg("+++: setItemColor($tCustDraw, 0x" & Hex($hWnd) & ") entered ... " _
    & ", $iIndex = " & $iIndex & ", $iSubItem = " & $iSubitem & ", $color = " & Hex($color))

    DllStructSetData($tCustDraw, 'clrText', $color) ; set the Text color
    DllStructSetData($tCustDraw, 'clrTextBk', bitnot($color)) ; set the background color
EndFunc   ;==>setItemColor

Func logmsg($msg, $lnum = @ScriptLineNumber)
    ConsoleWrite("+++:" & $lnum & ": " & $msg & @CRLF)
EndFunc   ;==>logmsg


Here is the full test code:

#include-once

;#cs
#NoTrayIcon
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#AutoIt3Wrapper_UseX64=N

Opt("GUICloseOnESC", 1) ; ESC closes GUI? (0 = no, 1 = yes)
Opt("GUIOnEventMode", 1) ; Change to OnEvent mode
Opt('MustDeclareVars', 1)
OnAutoItExitRegister("_test_exit")
Opt("GUIEventOptions", 1) ;0=default, 1=just notification, 2=GuiCtrlRead tab index
Opt("WinTitleMatchMode", -2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase

#include <GuiListBox.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ColorConstants.au3>

Global $__MCP_obj, $__MCP_GUI_hWnd, $idListView, $hListView

Global $hMainWin

test()
Exit

Func test()
    $hMainWin = GUICreate("Test window", 120, 100, @DesktopWidth / 2, -1)

    GUICtrlCreateButton("Hwnd", 10, 10, 40, 20)
    GUICtrlSetOnEvent(-1, "handle_1stTEST_btn")

    GUICtrlCreateButton("ID", 50, 10, 40, 20)
    GUICtrlSetOnEvent(-1, "handle_2ndTEST_btn")

    GUISetOnEvent($GUI_EVENT_CLOSE, "_test_exit")

    GUISetState(@SW_SHOW)

    While (1)
        Sleep(17)
    WEnd

EndFunc   ;==>test

Func _myColorPicker($obj)
    logmsg("+++: $obj = 0x" & Hex($obj) & @CRLF)
    Local $flags = 0
    Local $ww, $wh, $x, $y, $w, $h

    $__MCP_obj = $obj

    $ww = 350
    $wh = 500
    $x = 200
    $y = 150
    $__MCP_GUI_hWnd = GUICreate("myColorPicker", $ww, $wh, $x, $y, $flags)

    $x = 10
    $y = 10
    $w = 150
    $h = 20
    GUICtrlCreateButton("Set caller's color", $x, $y, $w, $h)
    GUICtrlSetOnEvent(-1, "__MCP_handle_SetColor_btn")

    $y += $h + 5
    $w = $ww - 25
    $h = $wh - 100
    $idListView = GUICtrlCreateListView("", $x, $y, $w, $h, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    $hListView = GUICtrlGetHandle($idListView)

    $x = $ww / 2 - 50
    $y = $wh - 60
    $w = 100
    $h = 25
    GUICtrlCreateButton("Quit Popup", $x, $y, $w, $h)
    GUICtrlSetOnEvent(-1, "__MCP_handle_QUIT_btn")

    GUICtrlSetFont($idListView, 8.5, -1, -1, "courier new")

    _GUICtrlListView_AddColumn($idListView, "Name", 100)
    _GUICtrlListView_AddColumn($idListView, "Value", 100)
    _GUICtrlListView_AddColumn($idListView, "Sample", 100)
    _GUICtrlListView_SetColumnWidth($idListView, 0, 100)
    _GUICtrlListView_SetColumnWidth($idListView, 1, 80)

    logmsg("+++: $idListView = " & $idListView)
    logmsg("+++: $hListView = 0x" & Hex($hListView))

    __MCP_populateListView($hListView)

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    GUISetState(@SW_SHOW, $__MCP_GUI_hWnd)

EndFunc   ;==>_myColorPicker

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam, $ilParam
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hListView
            Switch $iCode
                Case $NM_CUSTOMDRAW
                    Local $iDrawStage, $tCustDraw
                    $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $ilParam)
                    $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
                    Switch $iDrawStage
                        Case BitOR(0, $CDDS_ITEMPREPAINT) ;, $CDDS_SUBITEM)
                            setItemColor($tCustDraw, $hWndFrom)
                            Return $CDRF_NOTIFYSUBITEMDRAW
                    EndSwitch
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func setItemColor($tCustDraw, $hWnd)
    Local $iIndex, $color, $iSubitem

    $iIndex = DllStructGetData($tCustDraw, 'dwItemSpec') ; item number
    $color = _GUICtrlListView_GetItemParam($hWnd, $iIndex)
    $iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
    
    ; Here, I want to only change the color of the 3rd col, and not the 1st and 2nd cols
    DllStructSetData($tCustDraw, 'iSubItem', 2) ; always use the 3rd column (the 'sample' col)
    
    logmsg("+++: setItemColor($tCustDraw, 0x" & Hex($hWnd) & ") entered ... " _
    & ", $iIndex = " & $iIndex & ", $iSubItem = " & $iSubitem & ", $color = " & Hex($color))

    DllStructSetData($tCustDraw, 'clrText', $color) ; set the Text color
    DllStructSetData($tCustDraw, 'clrTextBk', bitnot($color)) ; set the background color
EndFunc   ;==>setItemColor

Func logmsg($msg, $lnum = @ScriptLineNumber)
    ConsoleWrite("+++:" & $lnum & ": " & $msg & @CRLF)
EndFunc   ;==>logmsg

Func __MCP_exit()
    GUIDelete($__MCP_GUI_hWnd)
EndFunc   ;==>__MCP_exit

Func __MCP_handle_SetColor_btn()
    If (IsHWnd($__MCP_obj)) Then
        GUISetBkColor($COLOR_BLUE, $__MCP_obj)
    Else
        GUICtrlSetBkColor($__MCP_obj, $COLOR_BLUE)
    EndIf
EndFunc   ;==>__MCP_handle_SetColor_btn

Func __MCP_populateListView($hWnd)
    Local $text, $parts, $iIndex

    Local Static $aItems[] = [ _
            "BLACK      | " & $CLR_BLACK & "|" & "", _
            "BLUE       | " & $CLR_BLUE & "|" & "", _
            "RED        | " & $CLR_RED & "|" & "", _
            "WHITE      | " & $CLR_WHITE & "|" & "", _
            "YELLOW     | " & $CLR_YELLOW & "|" & "" _
            ]

    _GUICtrlListView_BeginUpdate($hWnd)
    _GUICtrlListView_DeleteAllItems($hWnd)

    For $ndx = 0 To UBound($aItems) - 1
        $text = $aItems[$ndx]
        $parts = StringSplit($text, "|", 2)
        $parts[0] = StringStripWS($parts[0], 3)
        $parts[2] = StringStripWS($parts[2], 3)

        $iIndex = _GUICtrlListView_AddItem($hWnd, $parts[0], -1, $parts[1])
        _GUICtrlListView_AddSubItem($hWnd, $iIndex, Hex($parts[1]), 1)
        _GUICtrlListView_AddSubItem($hWnd, $iIndex, $parts[0], 2)
    Next

    _GUICtrlListView_EndUpdate($hWnd)
EndFunc   ;==>__MCP_populateListView

Func __MCP_handle_QUIT_btn()
    GUIDelete($__MCP_GUI_hWnd)
EndFunc   ;==>__MCP_handle_QUIT_btn

Func handle_1stTEST_btn()
    _myColorPicker($hMainWin)
EndFunc   ;==>handle_1stTEST_btn

Func handle_2ndTEST_btn()
    _myColorPicker(@GUI_CtrlId)
EndFunc   ;==>handle_2ndTEST_btn

Func _test_exit()
    Exit
EndFunc   ;==>_test_exit

 

Share this post


Link to post
Share on other sites

hello. Something like this should work...

 

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
Global $oListView = 0
Example()

Func Example()
    Local $hImage

    ; Create GUI
    GUICreate("ListView Add SubItem", 400, 300)
    $oListView = GUICtrlCreateListView("", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))

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

    ; Add columns
    _GUICtrlListView_InsertColumn($oListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($oListView, 1, "Column 2", 100)
    _GUICtrlListView_InsertColumn($oListView, 2, "Column 3", 100)

    Local $aItems[] = [ _
            "BLACK      | " & $CLR_BLACK & "|" & "", _
            "BLUE       | " & $CLR_BLUE & "|" & "", _
            "RED        | " & $CLR_RED & "|" & "", _
            "WHITE      | " & $CLR_WHITE & "|" & "", _
            "YELLOW     | " & $CLR_YELLOW & "|" & "" _
            ]

    _GUICtrlListView_BeginUpdate($oListView)
    _GUICtrlListView_DeleteAllItems($oListView)

    For $ndx = 0 To UBound($aItems) - 1
        $text = $aItems[$ndx]
        $parts = StringSplit($text, "|", 2)
        $parts[0] = StringStripWS($parts[0], 3)
        $parts[2] = StringStripWS($parts[2], 3)
        $iIndex = _GUICtrlListView_AddItem($oListView, $parts[0], -1, $parts[1])
        _GUICtrlListView_AddSubItem($oListView, $iIndex, Hex($parts[1]), 1)
        _GUICtrlListView_AddSubItem($oListView, $iIndex, $parts[0], 2)
    Next

    _GUICtrlListView_EndUpdate($oListView)
    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example


Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    $g_hListView = GUICtrlGetHandle($oListView)
    Switch $hWndFrom
        Case $g_hListView
            Switch $iCode
                Case $NM_CUSTOMDRAW
                    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
                    Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage")
                    If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
                    If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW
                    Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem")
                    Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
                    Local $iColor = $CLR_BLACK

                    If $iSubItem = 2 Then
                        $iColor = ("0x" & _GUICtrlListView_GetItemText($g_hListView, $iItem, 1))
                    Else
                        $iColor = $CLR_BLACK
                    EndIf

                    DllStructSetData($tCustDraw, "clrText", $iColor)
                    Return $CDRF_NEWFONT

            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Saludos

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

  • Similar Content

    • By argumentum
      ..I'm coding the High Contrast theme editor and using the _ChooseColor() I wandered why it does not keep the the custom colors I've added.
      Found that adding a static declaration would do it. But why stop there. Why not keep going, So I put this together that is non code braking ( backwards compatible ), to replace the one in <Misc.au3>
      _ChooseColor_mod_Example() Func _ChooseColor_mod_Example() Local $aCustColors[17] $aCustColors[1] = 0xFF0000 $aCustColors[16] = 0x0000FF $aCustColors = _ChooseColor_mod(2, "0x00ff00", 2, 0, $aCustColors) ConsoleWrite(@CRLF & $aCustColors[0] & @CRLF & @CRLF) ConsoleWrite(@CRLF & _ChooseColor_mod(2, $aCustColors[0], 2, 0, $aCustColors)[0] & @CRLF & @CRLF) ConsoleWrite(@CRLF & _ChooseColor_mod(2, "0x00ff00", 2) & @CRLF & @CRLF) ; just as default behaviour ConsoleWrite(@CRLF & _ChooseColor_mod(2, "0x00ff00", 2, 0, 'reset as is neither "Default" nor "Array[17]"') & @CRLF & @CRLF) ; just as default behaviour EndFunc ;==>_ChooseColor_mod_Example ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ChooseColor_mod ; Description ...: ; Syntax ........: _ChooseColor_mod([$iReturnType = 0[, $iColorRef = 0[, $iRefType = 0[, $hWndOwnder = 0[, $vCustColors = Default]]]]]) ; Parameters ....: $iReturnType - [optional] an integer value. Default is 0. See remarks for values. ; $iColorRef - [optional] an integer value. Default is 0. ; $iRefType - [optional] an integer value. Default is 0. See remarks for values. ; $hWndOwnder - [optional] a handle to the parent window. Default is 0. ; $vCustColors - [optional] an array of colors to show as custom values. See remarks for values. ; Return values .: Success - Hex value of the selected color ; Failure - $vCustomColors is returned if set, otherwise, -1 is returned. Also sets @error: ; | -2 - User initialized $tagCustcolors via $vCustColors. ; | -3 - User canceled or invalid dll struct. ; | -4 - Invalid $iReturnType value. ; | Other - Error returned from Dll call. ; Author ........: Gary Frost (gafrost) ; Modified ......: argumentum ; Remarks .......: $iReturnType can be 0 (RGB COLORREF), 1 (Hex BGR), or 2 (Hex RGB). ; $iRefType can be 0 (ColorRef), 1 (BGR Hex), or 2 (RGB Hex). ; $vCustColors is a zero based array[17] where: ; index 0 hold the color returned by the function. ; index 1 to 16 are the colors to use in Custom colors in RGB. ; One can pass the array with array[0] = -2 to initialize the custom colors without loading the interface. ; When $vCustColors is used, it returns the modified array. ( not the color as integer ). ; Anything other than Default or a proper array, will clear $tagCustcolors ( holder of the custom colors ). ; When $vCustColors is omited or Default, $tagCustcolors is kept ( hence, no need for the array to keep custom colors ). ; Related .......: Same Func from <Misc.au3> ; Link ..........: https://www.autoitscript.com/forum/topic/200985-_choosecolor-but-better/ ; Example .......: YES ; =============================================================================================================================== Func _ChooseColor_mod($iReturnType = 0, $iColorRef = 0, $iRefType = 0, $hWndOwnder = 0, $vCustColors = Default) ; basic code from Misc.au3 ; https://www.autoitscript.com/forum/topic/200985-_choosecolor-but-better/ ; added here for independance of #include <Misc.au3> Local Static $tagCHOOSECOLOR = "dword Size;hwnd hWndOwnder;handle hInstance;dword rgbResult;ptr CustColors;dword Flags;lparam lCustData;" & _ "ptr lpfnHook;ptr lpTemplateName" Local Static $__MISCCONSTANT_CC_ANYCOLOR = 0x0100 Local Static $__MISCCONSTANT_CC_FULLOPEN = 0x0002 Local Static $__MISCCONSTANT_CC_RGBINIT = 0x0001 ; added here for independance of #include <Misc.au3> Local $vReturn, $bCustColors = False, $tagCustcolors = "dword[16]" Local $tChoose = DllStructCreate($tagCHOOSECOLOR) Local Static $tCc = DllStructCreate($tagCustcolors) ; added Static (mod.), to keep $tagCustcolors changes by user when called again. If $vCustColors == Default Then ; nothing ElseIf UBound($vCustColors) = 17 Then $bCustColors = True For $n = 1 To 16 DllStructSetData($tCc, 1, $vCustColors[$n], $n) Next Else $tCc = DllStructCreate($tagCustcolors) ; reset, just in case you'd want to have it default again EndIf If $iRefType = 1 Then ; BGR hex color to colorref $iColorRef = Int($iColorRef) ElseIf $iRefType = 2 Then ; RGB hex color to colorref $iColorRef = Hex(String($iColorRef), 6) $iColorRef = '0x' & StringMid($iColorRef, 5, 2) & StringMid($iColorRef, 3, 2) & StringMid($iColorRef, 1, 2) EndIf DllStructSetData($tChoose, "Size", DllStructGetSize($tChoose)) DllStructSetData($tChoose, "hWndOwnder", $hWndOwnder) DllStructSetData($tChoose, "rgbResult", $iColorRef) DllStructSetData($tChoose, "CustColors", DllStructGetPtr($tCc)) DllStructSetData($tChoose, "Flags", BitOR($__MISCCONSTANT_CC_ANYCOLOR, $__MISCCONSTANT_CC_FULLOPEN, $__MISCCONSTANT_CC_RGBINIT)) Local $aResult = DllCall("comdlg32.dll", "bool", "ChooseColor", "struct*", $tChoose) If @error Then If Not $bCustColors Then Return SetError(@error, @extended, -1) Else $vCustColors[0] = -1 Return SetError(@error, @extended, $vCustColors) EndIf EndIf If $bCustColors Then ; this here is better than at the end, For $n = 1 To 16 ; that way you'll get the custom colors anyway. $vCustColors[$n] = DllStructGetData($tCc, 1, $n) Next If $vCustColors[0] = -2 Then Return $vCustColors EndIf If $aResult[0] = 0 Then ; Return SetError(-3, -3, -1) ; user selected cancel or struct settings incorrect If Not $bCustColors Then Return SetError(-3, -3, -1) Else $vCustColors[0] = -1 Return SetError(-3, -3, $vCustColors) EndIf EndIf Local $sColor_picked = DllStructGetData($tChoose, "rgbResult") If $iReturnType = 1 Then ; return Hex BGR Color $vReturn = '0x' & Hex(String($sColor_picked), 6) ElseIf $iReturnType = 2 Then ; return Hex RGB Color $sColor_picked = Hex(String($sColor_picked), 6) $vReturn = '0x' & StringMid($sColor_picked, 5, 2) & StringMid($sColor_picked, 3, 2) & StringMid($sColor_picked, 1, 2) ElseIf $iReturnType = 0 Then ; return RGB COLORREF $vReturn = $sColor_picked Else $vReturn = -1 SetError(-4, -4) EndIf If Not $bCustColors Then Return $vReturn $vCustColors[0] = $vReturn Return $vCustColors EndFunc ;==>_ChooseColor_mod Hopefully will replace the default one in the next release 
    • By DannyJ
      Hello Forum, 
      I have one special Combo-box [with BitOR($CBS_DROPDOWNLIST, $GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE) ] and if I press one button I want to change the Combo-box's background color, and after I press Button B I want to change it to the basic settings and it not works.
      I wanna do this with one combo-box.
      I have already tried several methods and I tried  GUICtrlComboSetColors that I have found on this forum.
      (But this methods works perfectly with Cobo boxes that don't have BitOR($CBS_DROPDOWNLIST, $GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE). 
      Here is the example code
      #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= ;$CBS_DROPDOWNLIST ;$GUI_SS_DEFAULT_COMBO $Form1 = GUICreate("Form1", 504, 249, 252, 227) $Combo1 = GUICtrlCreateCombo("", 136, 24, 193, 25,BitOR($CBS_DROPDOWNLIST, $GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE)) ; I want to change this special combo's background color if I press button 1 $Button1 = GUICtrlCreateButton("Button1", 112, 96, 75, 25) $Button2 = GUICtrlCreateButton("Button2", 264, 96, 75, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### GUICtrlSetData($Combo1," " & "|" & "apple" & "|" & "banana" & "|" & "cherry" ," ") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 GUICtrlSetBkColor($Combo1,0x0078D7) Case $Button2 ;Makes the original bc color GUICtrlSetBkColor($Combo1,0xFFFFFF) EndSwitch WEnd  
      Thanks you in advance your help
    • By user4157124
      ConsoleWrite('>Message here.' & @CRLF) outputs colored text (per + > - ! characters).
      ConsoleWrite('warning' & @TAB & '38' & @TAB & 'more text ...' & @CRLF) enables jump to line 38 on doubleclick.

      Using "jump to line" format, only red and pink text coloring seems possible (simply prefixing color directives to output-text disables jump to line functionality). Is it possible to combine the two (define custom color while keeping "jump to line" functionality)?
    • By Miliardsto
      I have the following code. You can see there are $color_normal and $color_trans
      In my case normal is too dark . And color trans is to much violet.
      If you run it you will see how its looks. I want gui with listView have the same color like taskbar in windows 10.
      How to achieve that?
       
       
      #include <Date.au3> #include <MsgBoxConstants.au3> #include <GuiListBox.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> HotKeySet("{ESC}", "Terminate") $color_normal = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6) $color_trans = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6) $trans = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") ConsoleWrite("Transpart = " & $trans & @CRLF) ConsoleWrite("Color normal = " & $color_normal & @CRLF) ConsoleWrite("Color trans = " & $color_trans & @CRLF) ConsoleWrite(_Get_taskbar_color()); It return AARRGGBB $taskbarColor = _Get_taskbar_color() Global $gui = GUICreate("Test", 150, 58,@DesktopWidth-300,@DesktopHeight-58,$WS_POPUP,BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)) Global $idListview = GUICtrlCreateListView("", 0, 0, 150, 58,BitOR($LBS_NOTIFY,$LBS_SORT), 0) ;_GuiCtrlMakeTrans(-1,100) ; Add column _GUICtrlListView_AddColumn($idListview, "Msgs", 100) GUICtrlSetFont(-1, 7, 400, 0, "Segoe UI") GUICtrlSetColor(-1, 0x470C4F) GUICtrlSetBkColor($idListview, 0x310638) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func Terminate() Exit EndFunc Func _Get_taskbar_color() If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "ColorPrevalence") Then If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then Return "0xD9" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6) Else Return "0xFF" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6) EndIf Else If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then Return "0xD9000000" Else Return "0xFF000000" EndIf EndIf EndFunc  
×
×
  • Create New...