Problem mit Event-Aufruf beim einklappen eines TreeViewItems

  • Hallo AutoIt-Gemeinde,

    zur Zeit verzweifle ich an einem seltsamen TreeView-Event-Problem. Und zwar habe ich folgendes vor:

    Zur
    Software-Installation möchte ich mittels eines TreeViews dem Nutzer die
    Möglichkeit geben, alle gewünschten Komponenten selbst auszuwählen.
    Also in diesem TreeView werden einige Hauptkomponenten dargestellt. Und
    jede Hauptkomponente hat mehrere Sub-Komponenten. Das Auswahlverhalten
    soll wie folgt sein. Wählt der Nutzer eine Hauptkomponente, werden von
    dieser auch alle Sub-Komponenten ausgewählt. Soll heißen, alle
    Kind-Items werden auf Checked gesetzt. Weiter soll, wenn ein einzelnes
    Kind-Element ausgewählt wird, werden auch alle Eltern-Items davon auf
    Checked gesetzt.

    Die TreeViewItems erzeuge ich einfach mit:

    [autoit]


    $treeView = GUICtrlCreateTreeView(16, 192, 465, 326, BitOR($GUI_SS_DEFAULT_TREEVIEW,$TVS_CHECKBOXES))
    $mainItem1 = GUICtrlCreateTreeViewItem("Main 1", $treeView)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $subItem1 = GUICtrlCreateTreeViewItem("Sub 1", $mainItem1 )
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $subItem2 = GUICtrlCreateTreeViewItem("Sub 2", $mainItem1 )
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")

    [/autoit]

    Und die Implementierung des Event-Handling ist wie folgt:

    [autoit]


    Func SelectionChangedChildItem()
    SetCheckedForAllChildItems(@GUI_CtrlId)
    SetCheckedForParentItem(@GUI_CtrlId)
    EndFunc

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

    Func SetCheckedForParentItem($hChildItem)
    Local $hParent = _GUICtrlTreeView_GetParentHandle ($TreeView1, $hChildItem)

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

    If $hParent <> 0 Then
    If _GUICtrlTreeView_GetChecked($TreeView1, $hChildItem) Then
    _GUICtrlTreeView_SetChecked($TreeView1, $hParent)
    Else
    Local $hChild
    Local $childCount = _GUICtrlTreeView_GetChildCount($TreeView1, $hParent)
    If $childCount > 0 Then
    Local $isAnyChildChecked = false
    For $i = 1 To $childCount
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($TreeView1, $hParent)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($TreeView1, $hChild)
    EndIf
    $isAnyChildChecked = BitOR($isAnyChildChecked, _GUICtrlTreeView_GetChecked($TreeView1, $hChild))
    Next
    _GUICtrlTreeView_SetChecked($TreeView1, $hParent, $isAnyChildChecked)
    EndIF
    EndIF
    SetCheckedForParentItem($hParent)
    EndIf
    EndFunc

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

    Func SetCheckedForAllChildItems($hParentItem)
    Local $hChild
    Local $childCount = _GUICtrlTreeView_GetChildCount($TreeView1, $hParentItem)
    Local $isChecked = _GUICtrlTreeView_GetChecked($TreeView1, $hParentItem)

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

    If $childCount > 0 Then
    For $i = 1 To $childCount
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($TreeView1, $hParentItem)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($TreeView1, $hChild)
    EndIf
    _GUICtrlTreeView_SetChecked($TreeView1, $hChild, $isChecked)
    SetCheckedForAllChildItems($hChild)
    Next
    EndIf
    EndFunc

    [/autoit]

    Das
    Setzten des Checked-Status funktioniert soweit ohne Probleme nur wenn
    ein Item im TreeView eingeklappt wird kommt es zu einem seltsamen
    Verhalten. Und zwar wird dann einmalig ebenfalls
    "SelectionChangedChildItem" aufgerufen. Und dieses führt dazu, dass wenn
    das Item welches eingeklappt wird auf Checked gesetzt ist, alle
    Kind-Items davon ebenfalls auf Checked gesetzt werden. Wobei dieses
    Verhalten nur beim !ersten! einklappen zu beobachten ist und auch nur,
    wenn vorher des Checked-Status der Kind-Elemente geändert wurde.

    Im obigen Beispiel wäre dies wie folgt:

    Ich
    habe eine Hauptkomponente "Main 1" mit zwei Sub-Komponenten "Sub 1" uns
    "Sub 2". Wird "Sub 1" nun auch Checked gesetzt wird ebenfalls "Main 1"
    auf Checked gesetzt. Soweit alles richtig. Nun setzte ich auch "Sub 2"
    auf Checked, nichts weiter passiert. Alles i.O. Nun deaktiviere ich "Sub
    1" wieder, also sind nur noch "Main 1" und "Sub 2" markiert bzw.
    Checked. Wenn ich nun "Main 1" einklappe wird
    "SelectionChangedChildItem" aufgerufen und da dieses den Checked-Status
    von "Main 1" abfragt werden "Sub 1" und "Sub 2" auf Checked gesetzt.
    Also meine Auswahl ist dahin. Nun kann ich "Main 1" aus- und einklappen
    wie ich will "SelectionChangedChildItem" wird nicht mehr aufgerufen.
    An
    diesem Punkt komme ich einfach nicht mehr weiter, es scheint ja nur
    einen Event für das ganze TreeViewItem-Handling zu geben bzw ich weiß
    nicht, ob man irgendwie im Event unterscheiden kann, ob das Item nur
    markiert bzw ein- oder ausgeklappt wurde.

    Könnt Ihr mir da vielleicht bei diesem Problem weiter helfen?

    Einmal editiert, zuletzt von Lars@Work (4. Juni 2014 um 10:54)

  • Am besten immer ein lauffähiges Script posten (im Idealfall gekürzt sodass man sich voll auf das Problem konzentrieren kann ohne 1000 Zeilen Code durchzugehen)
    Das erspart echt viel Arbeit und Raten was du wie genau machst.

  • Hallo und Guten Morgen,

    jetzt habe ich mein Script auf das "Wesentliche" gekürzt und hier angehangen. Für das von mir beschriebene Verhalten einfach alle Knoten aufklappen und dann z.B. unter "Main 2" das Sub-Item "Sub 7" auswählen. Nun sind die Items "Sub 7", "Main 2" und "Main" markiert bzw. auf Checked gesetzt. Wenn man jetzt den Knoten "Main" einklappt und wieder ausklappt sind nun alle Sub-Items markiert auch wenn sie vorher nicht ausgewählt werden.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>

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

    $Debug_TV = False
    Opt("GUIOnEventMode", 1)

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

    $Form1_1 = GUICreate("Test Framework Build Tool", 500, 360, 382, 56, BitOR($GUI_SS_DEFAULT_GUI,$DS_MODALFRAME))
    $Group1 = GUICtrlCreateGroup("Build Steps", 8, 8, 481, 350)
    $TreeView1 = GUICtrlCreateTreeView(16, 24, 465, 326, BitOR($GUI_SS_DEFAULT_TREEVIEW,$TVS_CHECKBOXES))
    $TreeView1_4 = GUICtrlCreateTreeViewItem("Main", $TreeView1)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Item = GUICtrlCreateTreeViewItem("Main 1", $TreeView1_4)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub1Item = GUICtrlCreateTreeViewItem("Sub 1", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub2Item = GUICtrlCreateTreeViewItem("Sub 2", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub3Item = GUICtrlCreateTreeViewItem("Sub 3", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub4Item = GUICtrlCreateTreeViewItem("Sub 4", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub5Item = GUICtrlCreateTreeViewItem("Sub 5", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub6Item = GUICtrlCreateTreeViewItem("Sub 6", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main1Sub7Item = GUICtrlCreateTreeViewItem("Sub 7", $main1Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Item = GUICtrlCreateTreeViewItem("Main 2", $TreeView1_4)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub1Item = GUICtrlCreateTreeViewItem("Sub 1", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub2Item = GUICtrlCreateTreeViewItem("Sub 2", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub3Item = GUICtrlCreateTreeViewItem("Sub 3", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub4Item = GUICtrlCreateTreeViewItem("Sub 4", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub5Item = GUICtrlCreateTreeViewItem("Sub 5", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub6Item = GUICtrlCreateTreeViewItem("Sub 6", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")
    $main2Sub7Item = GUICtrlCreateTreeViewItem("Sub 7", $main2Item)
    GUICtrlSetOnEvent(-1,"SelectionChangedChildItem")

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

    GUISetState(@SW_SHOW)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1_1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1_1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1_1Restore")

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

    While 1
    Sleep(100)
    WEnd

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

    Func SelectionChangedChildItem()
    SetCheckedForAllChildItems(@GUI_CtrlId)
    SetCheckedForParentItem(@GUI_CtrlId)
    EndFunc

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

    Func SetCheckedForParentItem($hChildItem)
    Local $hParent = _GUICtrlTreeView_GetParentHandle ($TreeView1, $hChildItem)

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

    If $hParent <> 0 Then
    If _GUICtrlTreeView_GetChecked($TreeView1, $hChildItem) Then
    _GUICtrlTreeView_SetChecked($TreeView1, $hParent)
    ;SetTreeViewItemCheckedState($TreeView1, $hParent, True)
    Else
    Local $hChild
    Local $childCount = _GUICtrlTreeView_GetChildCount($TreeView1, $hParent)
    If $childCount > 0 Then
    Local $isAnyChildChecked = false
    For $i = 1 To $childCount
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($TreeView1, $hParent)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($TreeView1, $hChild)
    EndIf
    $isAnyChildChecked = BitOR($isAnyChildChecked, _GUICtrlTreeView_GetChecked($TreeView1, $hChild))
    Next
    _GUICtrlTreeView_SetChecked($TreeView1, $hParent, $isAnyChildChecked)
    ;SetTreeViewItemCheckedState($TreeView1, $hParent, $isAnyChildChecked)
    EndIF
    EndIF
    SetCheckedForParentItem($hParent)
    EndIf
    EndFunc

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

    Func SetTreeViewItemCheckedState($treeViewCtrl, $treeViewItem, $isChecked)
    If _GUICtrlTreeView_GetChecked($treeViewCtrl, $treeViewItem) <> $isChecked Then
    _GUICtrlTreeView_SetChecked($treeViewCtrl, $treeViewItem, $isChecked)
    EndIf
    EndFunc

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

    Func SetCheckedForAllChildItems($hParentItem)
    Local $hChild
    Local $childCount = _GUICtrlTreeView_GetChildCount($TreeView1, $hParentItem)
    Local $isChecked = _GUICtrlTreeView_GetChecked($TreeView1, $hParentItem)

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

    If $childCount > 0 Then
    For $i = 1 To $childCount
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($TreeView1, $hParentItem)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($TreeView1, $hChild)
    EndIf
    _GUICtrlTreeView_SetChecked($TreeView1, $hChild, $isChecked)
    ;SetTreeViewItemCheckedState($TreeView1, $hChild, $isChecked)
    SetCheckedForAllChildItems($hChild)
    Next
    EndIf
    EndFunc

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

    Func OnCloseSecondary()
    EndFunc

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

    Func Form1_1Close()
    Exit
    EndFunc ;==>Form1_1Close

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

    Func Form1_1Maximize()
    EndFunc ;==>Form1_1Maximize

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

    Func Form1_1Minimize()
    EndFunc ;==>Form1_1Minimize

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

    Func Form1_1Restore()
    EndFunc ;==>Form1_1Restore

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

    Func Input1Change()
    EndFunc ;==>Input1Change

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

    Func TreeView1Click()
    EndFunc ;==>TreeView1Click

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Bei Guictrlsetonevent wird die Funktion beim Klick auf ein Item aufgerufen. Also auch, wenn zugeklappt wird... Einfach bei jedem Klick-Event,.
    Du müsstest mit WM_Command abfragen, ob ein Item checked wurde oder nicht :)

    Falls du noch mehr Infos brauchst:
    _GUICtrlTreeView_CreateDirectory (erstellt ein TreeView mit Verzeichnissen +Dateien)
    Hier hat Oscar nen nettes Beispiel :)
    (allerdings mit guigetmsg())

    • Offizieller Beitrag

    Das Problem läßt sich relativ einfach beheben, wenn man die Unterscheidung (auf-/zuklappen und Checkbox anhaken) hinbekommt.
    Dazu kann man eine Variable benutzen, die mittels WM_NOTIFY entsprechend gesetzt wird (das ist in dem Beispiel von mir, das Kanashius gepostet hat, noch schlechter gelöst):

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>

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

    $Debug_TV = False
    Opt("GUIOnEventMode", 1)

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

    $Form1_1 = GUICreate("Test Framework Build Tool", 500, 360, 382, 56, BitOR($GUI_SS_DEFAULT_GUI, $DS_MODALFRAME))
    $Group1 = GUICtrlCreateGroup("Build Steps", 8, 8, 481, 350)
    $TreeView1 = GUICtrlCreateTreeView(16, 24, 465, 326, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES))
    $TreeView1_4 = GUICtrlCreateTreeViewItem("Main", $TreeView1)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Item = GUICtrlCreateTreeViewItem("Main 1", $TreeView1_4)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub1Item = GUICtrlCreateTreeViewItem("Sub 1", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub2Item = GUICtrlCreateTreeViewItem("Sub 2", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub3Item = GUICtrlCreateTreeViewItem("Sub 3", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub4Item = GUICtrlCreateTreeViewItem("Sub 4", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub5Item = GUICtrlCreateTreeViewItem("Sub 5", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub6Item = GUICtrlCreateTreeViewItem("Sub 6", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main1Sub7Item = GUICtrlCreateTreeViewItem("Sub 7", $main1Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Item = GUICtrlCreateTreeViewItem("Main 2", $TreeView1_4)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub1Item = GUICtrlCreateTreeViewItem("Sub 1", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub2Item = GUICtrlCreateTreeViewItem("Sub 2", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub3Item = GUICtrlCreateTreeViewItem("Sub 3", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub4Item = GUICtrlCreateTreeViewItem("Sub 4", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub5Item = GUICtrlCreateTreeViewItem("Sub 5", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub6Item = GUICtrlCreateTreeViewItem("Sub 6", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")
    $main2Sub7Item = GUICtrlCreateTreeViewItem("Sub 7", $main2Item)
    GUICtrlSetOnEvent(-1, "SelectionChangedChildItem")

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

    GUISetState(@SW_SHOW)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1_1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1_1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1_1Restore")

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

    $fExpanded = False
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1
    Sleep(100)
    WEnd

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR, $hWndTreeview
    $hWndTreeview = GUICtrlGetHandle($TreeView1)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndTreeview
    Switch $iCode
    Case $TVN_ITEMEXPANDEDA, $TVN_ITEMEXPANDEDW
    $fExpanded = True
    Case $NM_CLICK
    $fExpanded = False
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func SelectionChangedChildItem()
    If $fExpanded Then Return
    SetCheckedForAllChildItems(@GUI_CtrlId)
    SetCheckedForParentItem(@GUI_CtrlId)
    EndFunc ;==>SelectionChangedChildItem

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

    Func SetCheckedForParentItem($hChildItem)
    Local $hParent = _GUICtrlTreeView_GetParentHandle($TreeView1, $hChildItem)

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

    If $hParent <> 0 Then
    If _GUICtrlTreeView_GetChecked($TreeView1, $hChildItem) Then
    _GUICtrlTreeView_SetChecked($TreeView1, $hParent)
    ;SetTreeViewItemCheckedState($TreeView1, $hParent, True)
    Else
    Local $hChild
    Local $childCount = _GUICtrlTreeView_GetChildCount($TreeView1, $hParent)
    If $childCount > 0 Then
    Local $isAnyChildChecked = False
    For $i = 1 To $childCount
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($TreeView1, $hParent)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($TreeView1, $hChild)
    EndIf
    $isAnyChildChecked = BitOR($isAnyChildChecked, _GUICtrlTreeView_GetChecked($TreeView1, $hChild))
    Next
    _GUICtrlTreeView_SetChecked($TreeView1, $hParent, $isAnyChildChecked)
    ;SetTreeViewItemCheckedState($TreeView1, $hParent, $isAnyChildChecked)
    EndIf
    EndIf
    SetCheckedForParentItem($hParent)
    EndIf
    EndFunc ;==>SetCheckedForParentItem

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

    Func SetTreeViewItemCheckedState($treeViewCtrl, $treeViewItem, $isChecked)
    If _GUICtrlTreeView_GetChecked($treeViewCtrl, $treeViewItem) <> $isChecked Then
    _GUICtrlTreeView_SetChecked($treeViewCtrl, $treeViewItem, $isChecked)
    EndIf
    EndFunc ;==>SetTreeViewItemCheckedState

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

    Func SetCheckedForAllChildItems($hParentItem)
    Local $hChild
    Local $childCount = _GUICtrlTreeView_GetChildCount($TreeView1, $hParentItem)
    Local $isChecked = _GUICtrlTreeView_GetChecked($TreeView1, $hParentItem)

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

    If $childCount > 0 Then
    For $i = 1 To $childCount
    If $i = 1 Then
    $hChild = _GUICtrlTreeView_GetFirstChild($TreeView1, $hParentItem)
    Else
    $hChild = _GUICtrlTreeView_GetNextSibling($TreeView1, $hChild)
    EndIf
    _GUICtrlTreeView_SetChecked($TreeView1, $hChild, $isChecked)
    ;SetTreeViewItemCheckedState($TreeView1, $hChild, $isChecked)
    SetCheckedForAllChildItems($hChild)
    Next
    EndIf
    EndFunc ;==>SetCheckedForAllChildItems

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

    Func OnCloseSecondary()
    EndFunc ;==>OnCloseSecondary

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

    Func Form1_1Close()
    Exit
    EndFunc ;==>Form1_1Close

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

    Func Form1_1Maximize()
    EndFunc ;==>Form1_1Maximize

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

    Func Form1_1Minimize()
    EndFunc ;==>Form1_1Minimize

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

    Func Form1_1Restore()
    EndFunc ;==>Form1_1Restore

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

    Func Input1Change()
    EndFunc ;==>Input1Change

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

    Func TreeView1Click()
    EndFunc ;==>TreeView1Click

    [/autoit]
  • Hallo und Vielen Dank!

    Hatte jetzt etwas zeit um mich wieder um das Problem zu kümmern. Mit dem Beispielcode von Oscar war es auch ganz schnell gelöst! Vielen Dank dafür!