Iconwechsel in einem ListView

  • Hoffentlich klappt das mit dem Thema erstellen. Noch nie gemacht.

    Also ich habe ein ListView erstellt, wo pro Zeile in der ersten Spalte ein Icon sichtbar ist.

    $gui = GUICreate("Icons in ListViews", 320, 240, -1, -1)

    $listview = GUICtrlCreateListView("Icon|Beschreibung|OK", 10, 10, 300, 220)
    $array[$index] = GUICtrlCreateListViewItem("|Testtext||", $listview)
    GUICtrlSetImage($array[0], "shell32.dll",16, 2)

    Jetzt werden in diesem ListView Zeilen ( Items) geloescht, oder einzelne Spalten je Zeile geaendert. Klappt alles prima.

    Und hier moechte ich dann das Icon je geaenderter bzw. markierter Zeile neu setzen. Quelltext wie folgt:

    $hWnd = ControlGetHandle("","",$ListView)
    $Selected = _GUICtrlListView_GetSelectedIndices( $hWnd, True )

    For $indx = 1 to UBound($Selected) - 1
    GUICtrlSetImage($Selected[$indx],"shell32.dll",28,2)
    Next

    Und genau das funktioniert NICHT.
    Markierte Zeilen loeschen oder updaten funktioniert ja auch. z.B.:

    For $indx = UBound($Selected) - 1 to 1 Step -1
    ; Msgbox(0," JETZT", $Selected[$indx])
    _GUICtrlListView_DeleteItem($hWnd,$Selected[$indx])
    Next

    Habe alles probiert. Bin fuer jeden Hinweis sehr dankbar.

  • Hallo Greenhorn,

    danke und nochmal Danke , der Link war der entscheidende Hinweis.
    Durch die Fkt. "Zeilen loeschen" in meinem Program muss ich mir den Index jedes markierten ListVeiwItems neu holen.

    Spoiler anzeigen


    $hWnd = ControlGetHandle('','',$ListView)
    $Selected = _GUICtrlListView_GetSelectedIndices( $hWnd, True )

    For $indx = 1 to UBound($Selected) - 1
    ; hier kommt die Funktion was mit den markierten Zeilen bzw. den einzelnen Werten gemacht werden soll ...........
    ; Jetzt FERTIG! Neues Icon zeigen
    GUICtrlSetImage(_GUICtrlListView_GetItemParam($hWnd,$Selected[$indx]),"shell32.dll",1003)
    Next

    PS.: an Xenobiologist
    Ich werde meine gesamte ListViewFunktionalitaet hier noch praesentieren.
    Zwar abgespeckt (muss sein, zuviel FirmenInternes enthalten), aber auf alle Faelle als Demo auf Anhieb lauffaehig.

  • Wie kann ich nach GUICtrlSetImage die Markierung der Zeile aufheben.
    komme mit der UDF-Hilfe nicht so richtig klar.

    Spoiler anzeigen
    [autoit]


    $hWnd = ControlGetHandle('','',$ListView)
    $Selected = _GUICtrlListView_GetSelectedIndices( $hWnd, True )

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

    For $indx = 1 to UBound($Selected) - 1

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

    ; hier kommt die Funktion was mit den markierten Zeilen bzw. den einzelnen Werten gemacht werden soll ...........

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

    ; Jetzt FERTIG! Neues Icon zeigen
    GUICtrlSetImage(_GUICtrlListView_GetItemParam($hWnd,$Selected[$indx]),"shell32.dll",1003)

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

    ; HIER JETZT Markierung des Items bzw. der Zeile aufheben.

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

    Next

    [/autoit]
  • Hallo Greenhorn,

    doch noch zwei kleine Fragen:

    Wie kann ich die Textfarbe nur einer Zeile (Item) aendern?

    _GUICtrlListView_SetTextColor($hWnd, 0xFF0000) aendert ja das gesamte ListView.

    Woran kann es liegen das bei mir Consolewrite nicht mehr funktioniert?

    Danke im Voraus !!