Frage zum ControlTreeView-Befehl

  • Hallo,
    ich habe da eine Frage zum ControlTreeView-Befehl.
    Um damit ein Item im TreeView anzusprechen, muss man ja die Ebenen getrennt mit einem | angeben.
    Z.B. ControlTreeView($Fenster_Text, $Fenster_Titel, Control-ID, "Exists", "#0|#3|#2")

    Gibt es da eigentlich eine Beschränkung z.B nur maximal fünf Ebenen können angegeben werden?

    Hintergrund:
    Ich schreibe gerade ein Installationsscript für Hypersnap6.
    Da muiss ich in einem Fenster, mit einem SysTreeViev321, den Installationspfad angeben.
    Bis zur fünften Ebene funktioniert der Befehl einwandfrei, aber alle Items der sechsten Ebene erkennt AutoIt nicht mehr, egal ob man da den Item-Text oder einfach nur z.B. #3 angibt
    Anscheinend gibt es da eine Begrenzung für die Anzahl der Ebenen.
    (In der deutschen Hilfe zum ControlTreeView-Befehl, steht leider auch nichts dazu).

    Wenns da eine Beschränkung gibt, gibt es da eventuell einen Trick wie man doch die tieferen Ebenen ansprechen kann?

    Gruß:
    BigRox

  • Hallo BigRox,

    ich kannte diese Funktion bisher nicht, kann aber dein Problem unter XP SP3 (32 bit) nicht nachvollziehen. Folgendes etwas abgeänderte Beispiel aus der deutschen Hilfe läuft bei mir problemlos

    [autoit]

    ; Author: Zedna
    ;auf >exists< mit 7 Ebenen (Root = Ebene 0) angepasst (Auto)Bert
    #include <GUIConstantsEx.au3>
    #include <TreeviewConstants.au3>
    #include <WindowsConstants.au3>

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

    $gui = GUICreate("ControlTreeview test", 212, 212)
    $treeview = GUICtrlCreateTreeView(6, 6, 200, 160, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
    $h_tree = ControlGetHandle($gui, "", $treeview)

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

    $root = GUICtrlCreateTreeViewItem("Root", $treeview)
    $item1 = GUICtrlCreateTreeViewItem("Item 1", $root)
    $item11 = GUICtrlCreateTreeViewItem("Item 11", $item1)
    $item111 = GUICtrlCreateTreeViewItem("Item 111", $item11)
    $item1111 = GUICtrlCreateTreeViewItem("Item 1111", $item111)
    $item11111 = GUICtrlCreateTreeViewItem("Item 11111", $item1111)
    $item111111 = GUICtrlCreateTreeViewItem("Item 111111", $item11111)
    $item1111111 = GUICtrlCreateTreeViewItem("Item 1111111", $item111111)
    $item2 = GUICtrlCreateTreeViewItem("Item 2", $root)

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

    GUISetState(@SW_SHOW)

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

    ; some examples
    ;ControlTreeView ($gui, "", $h_tree, "Expand", "Root")

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

    $bEixsts = ControlTreeView ($gui, "", $h_tree, "Exists", "Root|Item 1|Item 11|Item 111|Item 1111|Item 11111|Item 111111|Item 1111111")
    if $bEixsts then
    MsgBox(0,"", "Item 1111111 existiert")
    Else
    MsgBox(0,"", "Item 1111111 existiert nicht")
    EndIf

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

    $bEixsts = ControlTreeView ($gui, "", $h_tree, "Exists", "Root|Item 1|Item 11|Item 111|Item 1111|Item 11111|Item 111111|Item 1111112")
    if $bEixsts then
    MsgBox(0,"", "Item 1111112 existiert")
    Else
    MsgBox(0,"", "Item 1111112 existiert nicht")
    EndIf

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

    [/autoit]

    Zitat aus dt. Hilfe zu dieser Funktion

    Zitat

    Da AutoIt eine 32-bit Anwendung ist, ist es möglich, dass manche Befehle nicht verfügbar sind, wenn eine 64-bit Anwendung, beispielsweise auf einem 64-bit Windows, angesprochen wird.

    mit freundlichem Gruß

    (Auto)Bert

  • Hallo AutoBert,
    ich habe das Beispiel eben bei mir ausprobiert.
    Ergebnis: Es funktioniert auch bei mir.
    Ich verwende auch Windows XP SP3 32-Bit.
    Anscheinend ist das TreeView von HyperSnap 6, dann doch etwas anders (Das AutoIt-Fenstertool nennt es aber "SysTreeView321").


    Gruß:
    BigRox