farbe von listviewspalte ändern

  • Wenn du die Zeilen mit GuiCtrlCreateListViewItem erstellst kannst du mit GuiCtrlSetBkColor Färben.

    Hier haste mal nen Beispiel

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    GUICreate("", 633, 454, 192, 114)
    $ListView1 = GUICtrlCreateListView("", 112, 96, 329, 241)
    _GUICtrlListView_AddColumn($ListView1,"",200)
    GUICtrlCreateListViewItem("Rot",$ListView1)
    GUICtrlSetBkColor(-1,0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateListViewItem("Grün",$ListView1)
    GUICtrlSetBkColor(-1,0x00FF00)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateListViewItem("Blau",$ListView1)
    GUICtrlSetBkColor(-1,0x0000FF)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Um NUR eine (mehrere) Spalten mit einer Farbe einzufärben kann man das stark schrumpfen:

    Spoiler anzeigen
    [autoit]

    #Include <GuiConstantsEx.au3>
    #Include <GuiListView.au3>
    #Include <ListViewConstants.au3>
    #Include <StructureConstants.au3>
    #Include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("Listview Spalte färben", 400, 300)

    [/autoit] [autoit][/autoit] [autoit]

    $cListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    $hListView = GUICtrlGetHandle($cListView)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($hListView, 1, "Column 2", 100)
    _GUICtrlListView_InsertColumn($hListView, 2, "Column 3", 100)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 30
    _GUICtrlListView_AddItem($hListView, "Row" & $i & ": Col 1", $i-1)
    For $j = 1 To 2
    _GUICtrlListView_AddSubItem ($hListView, $i-1, "Row" & $i & ": Col " & $j+1, $j)
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR

    [/autoit] [autoit][/autoit] [autoit]

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView
    Switch $iCode
    Case $NM_CUSTOMDRAW
    If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
    Local $tCustDraw = DllStructCreate('hwnd hwndFrom;int idFrom;int code;' & _
    'dword DrawStage;hwnd hdc;long rect[4];dword ItemSpec;int ItemState;dword Itemlparam;' & _
    'dword clrText;dword clrTextBk;int SubItem;' & _
    'dword ItemType;dword clrFace;int IconEffect;int IconPhase;int PartID;int StateID;long rectText[4];int Align', _
    $lParam), $iDrawStage, $iItem, $iSubitem, $hDC, $iColor
    $iDrawStage = DllStructGetData($tCustDraw, 'DrawStage')
    If $iDrawStage = $CDDS_PREPAINT Or $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYITEMDRAW
    If Not BitAND($iDrawStage, $CDDS_SUBITEM) Then Return $CDRF_DODEFAULT
    $iSubitem = DllStructGetData($tCustDraw, 'SubItem')

    [/autoit] [autoit][/autoit] [autoit]

    $iColor = RGB2BGR(0xFFFF00) ; Hintergrundfarbe für Spalte
    $iColDefault = RGB2BGR(0xFFFFFF) ; Standardfarbe (weiß)
    If $iSubitem = 1 Then ; Hier SubItem (Spalte) festlegen
    DllStructSetData($tCustDraw, 'clrTextBk', $iColor)
    Else
    DllStructSetData($tCustDraw, 'clrTextBk', $iColDefault)
    EndIf
    Return $CDRF_NEWFONT
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit] [autoit][/autoit] [autoit]

    Func RGB2BGR($iColor)
    Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
    EndFunc

    [/autoit]