auf Änderungen in ListView reagieren

  • Hallo. Wurde sicher schonmal gefragt, finde es aber nicht. Ich möchte auf Änderungen in einem Listview reagieren. D.H. je nach Inhalt des Elements, soll sich anderswo was ändern (ohne einen Button gedrückt zu haben). Im Beispiel könnte ein Text in der aktiven Listenzeile, die Farbe des Label beeinflussen. Wie ist die Syntax der While Schleife?

    [autoit]

    #include <GuiConstants.au3>
    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #include <Misc.au3>
    #NoTrayIcon
    _Singleton("AutoItTest") ; Interner Programm / Script Bezeichnung

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

    Dim $msg, $ret, $INHALT = ""
    Dim $listbox, $button, $label, $i, $lvIndex, $arChange, $var
    ; GUI
    GuiCreate("Titel", 440, 510,-1,-1,$WS_EX_APPWINDOW)
    ; LIST VIEW
    $listbox = GuiCtrlCreateListView("Spalte1 | Spalte2 ", 10, 10, 410, 330, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))
    GuiCtrlCreateListViewItem("11|12|", $listbox)
    GuiCtrlCreateListViewItem("21|22", $listbox)
    _GUICtrlListViewSetItemSelState ($listbox, 0)
    ;~ LABEL
    $label1 = GuiCtrlCreateLabel("Label", 50, 400, 40, 40)
    GuiCtrlSetBkColor($label1, 0x00FF00)
    ; BUTTONS
    $button_1 = GuiCtrlCreateButton("Button 1" , 10 , 350, 100, 30)
    ; GUI MESSAGE LOOP
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE AND MsgBox(36, "Beenden?", "Beenden?") == 6
    ExitLoop

    Case $msg = $button_1
    $lvIndex = _GUICtrlListViewGetSelectedIndices($listbox)
    $arChange = _GUICtrlListViewGetItemTextArray($listbox, $lvIndex)
    MsgBox(0, "Klick", $arChange[2])
    EndSelect
    WEnd
    exit

    [/autoit]
  • Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    GUICreate("GUI with more treeviews",340,200,-1,-1,BitOr($WS_MINIMIZEBOX,$WS_MAXIMIZEBOX,$WS_GROUP,$WS_CAPTION,$WS_POPUP,$WS_SYSMENU))

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

    $maintree = GUICtrlCreateTreeView (10,10,120,150)
    $aboutitem = GUICtrlCreateTreeViewItem ("About",$maintree)
    $generalitem = GUICtrlCreateTreeViewItem ("General",$maintree)
    $toolsitem = GUICtrlCreateTreeViewItem ("Tools",$maintree)
    $effectitem = GUICtrlCreateTreeViewItem ("Effects",$generalitem)
    $styleitem = GUICtrlCreateTreeViewItem ("Styles",$generalitem)
    $cmditem = GUICtrlCreateTreeViewItem ("Commandline",$toolsitem)
    $miscitem = GUICtrlCreateTreeViewItem ("Misc",$toolsitem)

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

    $descgroup = GUICtrlCreateGroup ("Description",140,105,180,55)
    GUICtrlSetState (-1,$GUI_HIDE)

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

    $effectsgroup = GUICtrlCreateGroup ("Effects",140,5,180,95)
    GUICtrlSetState (-1,$GUI_HIDE)
    $effectstree = GUICtrlCreateTreeView (150,20,160,70,BitOr($TVS_CHECKBOXES,$TVS_DISABLEDRAGDROP),$WS_EX_CLIENTEDGE)
    GUICtrlSetState (-1,$GUI_HIDE)
    $effect1 = GUICtrlCreateTreeViewItem ("Effect 1",$effectstree)
    $effect2 = GUICtrlCreateTreeViewItem ("Effect 2",$effectstree)
    $effect3 = GUICtrlCreateTreeViewItem ("Effect 3",$effectstree)
    $effect4 = GUICtrlCreateTreeViewItem ("Effect 4",$effectstree)
    $effect5 = GUICtrlCreateTreeViewItem ("Effect 5",$effectstree)

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

    $stylesgroup = GUICtrlCreateGroup ("Styles",140,5,180,95)
    GUICtrlSetState (-1,$GUI_HIDE)
    $stylestree = GUICtrlCreateTreeView (150,20,160,70,BitOr($TVS_CHECKBOXES,$TVS_DISABLEDRAGDROP),$WS_EX_CLIENTEDGE)
    GUICtrlSetState (-1,$GUI_HIDE)
    $style1 = GUICtrlCreateTreeViewItem ("Style 1",$stylestree)
    $style2 = GUICtrlCreateTreeViewItem ("Style 2",$stylestree)
    $style3 = GUICtrlCreateTreeViewItem ("Style 3",$stylestree)
    $style4 = GUICtrlCreateTreeViewItem ("Style 4",$stylestree)
    $style5 = GUICtrlCreateTreeViewItem ("Style 5",$stylestree)

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

    $aboutlabel = GUICtrlCreateLabel ("This is only a treeview demo.",160,80,160,20)

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

    $cancelbutton = GUICtrlCreateButton ("Cancel",130,170,70,20)
    GUISetState()

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

    GUIctrlSetState ($effect1,$GUI_CHECKED)
    GUIctrlSetState ($effect3,$GUI_CHECKED)
    GUIctrlSetState ($style4,$GUI_CHECKED)
    GUIctrlSetState ($style5,$GUI_CHECKED)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = -3 Or $msg = -1 Or $msg = $cancelbutton
    ExitLoop
    Case $msg = $aboutitem
    GUIctrlSetState ($descgroup,$GUI_HIDE)
    GUIctrlSetState ($effectstree,$GUI_HIDE)
    GUIctrlSetState ($effectsgroup,$GUI_HIDE)
    GUIctrlSetState ($stylestree,$GUI_HIDE)
    GUIctrlSetState ($stylesgroup,$GUI_HIDE)
    GUIctrlSetState ($aboutlabel,$GUI_SHOW)

    Case $msg = $effectitem
    GUIctrlSetState ($stylestree,$GUI_HIDE)
    GUIctrlSetState ($stylesgroup,$GUI_HIDE)
    GUIctrlSetState ($aboutlabel,$GUI_HIDE)
    GUIctrlSetState ($effectsgroup,$GUI_SHOW)
    GUIctrlSetState ($descgroup,$GUI_SHOW)
    GUICtrlSetState($effectstree,$GUI_SHOW)
    GUICtrlSetBkColor ($effectstree,0xD0F0F0)
    ;GUIctrlSetState...($effectstree,$GUI_SHOW)

    Case $msg = $styleitem
    GUIctrlSetState ($effectstree,$GUI_HIDE)
    GUIctrlSetState ($effectsgroup,$GUI_HIDE)
    GUIctrlSetState ($aboutlabel,$GUI_HIDE)
    GUIctrlSetState ($stylesgroup,$GUI_SHOW)
    GUIctrlSetState ($descgroup,$GUI_SHOW)
    ;GUIctrlSetState.($stylestree,$GUI_SHOW)
    GUICtrlSetState ($stylestree,$GUI_SHOW)
    GUICtrlSetColor ($stylestree,0xD00000)
    GUICtrlSetBkColor ($stylestree,0xD0FFD0)

    EndSelect
    WEnd

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

    GUIDelete()
    Exit

    [/autoit]


    Aus den AutoIt-Examples......


    [edit] Sry verlesen[/edit]

    2 Mal editiert, zuletzt von GrungeRocker (6. April 2007 um 15:38)

  • Wenn ich das richtig verstanden hab, läufts im Beispiel darauf hinaus:

    [autoit]

    case $msg = $listbox

    [/autoit]

    Das klappt aber so nicht.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #include <Misc.au3>
    #NoTrayIcon
    _Singleton("AutoItTest") ; Interner Programm / Script Bezeichnung

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

    ; GUI
    GuiCreate("Titel", 440, 510,-1,-1,$WS_EX_APPWINDOW)

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

    ; LIST VIEW
    $listbox = GuiCtrlCreateListView("Spalte1 | Farbe ", 10, 10, 410, 330, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))

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

    GuiCtrlCreateListViewItem("11|0xD00000", $listbox)
    GuiCtrlCreateListViewItem("21|0x000FF0", $listbox)
    _GUICtrlListViewSetItemSelState ($listbox, 0)

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

    ;~ LABEL
    $label1 = GuiCtrlCreateLabel("Label", 50, 400, 40, 40)
    GuiCtrlSetBkColor($label1, 0x00FF00)

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

    ; BUTTONS
    $button_1 = GuiCtrlCreateButton("Button 1" , 10 , 350, 100, 30)

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

    ; GUI MESSAGE LOOP
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE AND MsgBox(36, "Beenden?", "Beenden?") == 6
    ExitLoop

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

    Case $msg = $listbox
    $lvIndex = _GUICtrlListViewGetSelectedIndices($listbox)
    $arChange = _GUICtrlListViewGetItemTextArray($listbox, $lvIndex)
    GuiCtrlSetBkColor($label1, $arChange[2])

    Case $msg = $button_1
    $lvIndex = _GUICtrlListViewGetSelectedIndices($listbox)
    $arChange = _GUICtrlListViewGetItemTextArray($listbox, $lvIndex)
    MsgBox(0, "Klick", $arChange[2])
    EndSelect
    WEnd
    exit

    [/autoit]
    • Offizieller Beitrag

    Hi,

    wolltest du nicht eher sowas?

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #include <Misc.au3>
    #NoTrayIcon
    _Singleton("AutoItTest") ; Interner Programm / Script Bezeichnung

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

    ; GUI
    GUICreate("Titel", 440, 510, -1, -1, $WS_EX_APPWINDOW)

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

    ; LIST VIEW
    $listbox = GUICtrlCreateListView("Spalte1 | Farbe ", 10, 10, 410, 330, BitOR($LVS_SINGLESEL, $LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))

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

    GUICtrlCreateListViewItem("11|0xD00000", $listbox)
    GUICtrlCreateListViewItem("21|0x000FF0", $listbox)
    _GUICtrlListViewSetItemSelState($listbox, 0)

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

    ;~ LABEL
    $label1 = GUICtrlCreateLabel("Label", 50, 400, 40, 40)
    GUICtrlSetBkColor($label1, 0x00FF00)

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

    ; BUTTONS
    $button_1 = GUICtrlCreateButton("Button 1", 10, 350, 100, 30)
    Global $merken = 0

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

    ; GUI MESSAGE LOOP
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE And MsgBox(36, "Beenden?", "Beenden?") == 6
    ExitLoop

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

    Case $msg = $listbox
    ;nichts
    Case $msg = $button_1
    $lvIndex = _GUICtrlListViewGetSelectedIndices($listbox)
    $arChange = _GUICtrlListViewGetItemTextArray($listbox, $lvIndex)
    MsgBox(0, "Klick", $arChange[2])
    EndSelect
    _check()
    WEnd
    Exit

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

    Func _check()
    $vergleich = _GUICtrlListViewGetSelectedIndices($listbox, 0)
    If $merken <> $vergleich Then
    GUICtrlSetBkColor($label1, _GUICtrlListViewGetItemText($listbox, _GUICtrlListViewGetSelectedIndices($listbox, 0), 1))
    $merken = $vergleich
    EndIf
    EndFunc ;==>_check

    [/autoit]

    So long,

    Mega

  • Vielen Dank. Genau was ich suchte.

    Man sollte $merken besser verschieden von 0 setzen, damit schon beim GUI Start der Vergleich zieht.