get control ids von TreeVieItems

  • Hi Leute,
    ich bekomms einfach nicht hin die ids der Treeview items die ich mit GUICtrlCreateTreeViewItem erstellt habe auszulesen.
    Ich habe nur die id des Treeview, da ich nicht mit globalen Variablen arbeite und möchte nur die ids der 4 Items dieses Treviews zurückgegeben bekommen, da diese 4 Items wie checkboxen anklickbar sind und ich prüfen möchte ob diese angeklickt wurden oder nicht.
    Wenn ich mir _GUICtrlTreeView_GetItemParam($treeview) ausgeben lasse, bekomme ich kein array sondern nur die id des 1ten Items.

    Bei _GUICtrlTreeView_GetItemParam($treeview, 0) bekomm ich False
    Bei _GUICtrlTreeView_GetItemParam($treeview, 1) bekomm ich auch False

    Hat jemand bitte eine Idee?
    Danke

    Einmal editiert, zuletzt von Trolleule1337 (29. Juni 2013 um 02:32)

  • ok, also ich hab ein Treeview control. Diesem füge ich 4 Items hinzu und zwar so.

    [autoit]

    Local $imgTreeViewItem[$ImgCount]
    For $i = 1 To $ImgCount
    $imgTreeViewItem[$i-1] = GUICtrlCreateTreeViewItem($ImgName[$i-1], $imgTreeView)
    ;MsgBox(0, $imgTreeView, $imgTreeViewItem[$i-1])
    Next

    [/autoit]

    $ImgCount = 4

    Im Array $imgTreeViewItem stehen die ID's der Items. Diese brauche ich, da ich nicht mit globalen Variablen arbeite. Ich habe also nur $imgTreeView, also die id des TreeViews.

    Danke für deine Hilfe!

  • Und du hast das innerhalb einer Funktion? Warum beginnen die mit $img... und nicht $c...?
    Wenn du die IDs hast, was willst du dann machen?

  • Da ist ja die Hilfe ein bisschen fehlerhaft, da ja GUICtrlCreateTreeViewItem die ID zurückgibt und nicht das Handle, wie es laut Hilfe benötigt wird.

  • Hmm, dafür benötige ich doch als 2ten Param "Handle to the item", was ich ja nicht habe und zurückgegeben haben möchte, aber nicht nur vom 1ten Item sondern von allen.?

  • Probier doch einfach das Beispiel aus, dann weißt du es doch, obes funktioniert. Du siehst doch in dem Beispiel, dass dort die ID genutzt wird.

  • Das hilft mir nichts weil in jedem Beispiel einfach der handle vom GUICtrlCreateTreeViewItem verwendet wird, also Global $handle = GUICtrlCreateTreeViewItem(...). Jetzt arbeite ich aber nicht global sondern Local $handle = GUICtrlCreateTreeViewItem(...). Ich brauche aber die handles bzw. die Id's der Items um das machen zu können:

    [autoit]

    If BitAnd(GUICtrlRead($handle[$j-1]), $GUI_CHECKED) = $GUI_CHECKED Then

    [/autoit]

    Danke für eure Hilfe!

  • Ob Local oder Global ist doch egal. Willst du es denn in der selben Funktion auswerten? Und warum Local?

  • Nein ich brauch es in einer anderen Funktion die ich mit GuiCtrlOnEvent aufrufe. Tja warum Local... so ists besser programmiert und für mich auch übersichtlicher. Aber an der Stelle muss man ja nicht drehen, muss doch möglich sein handle oder id von Items zu erfassen ?(

  • Super klappt, dankeschön! Wie dumm, da ich es bereits so versucht hatte:

    [autoit]

    Local $hItem = _GUICtrlTreeView_GetFirstItem($TreeView)
    $hItem = _GUICtrlTreeView_GetNextSibling($TreeView, $hItem)
    MsgBox(0, $hItem, _WinAPI_GetDlgCtrlID($hItem))

    [/autoit]

    Ich weiß, das die ID's von den Items von $handle[0-3] = GUICtrlCreateTreeViewItem(...)
    45, 46, 47 und 48 waren und demnach müsste ich bei "MsgBox(0, $hItem, _WinAPI_GetDlgCtrlID($hItem))" einer der 4 ID's erhalten. Bekam aber immer 0 und dachte daher das es nicht funktioniert, aber wenn ich es mit

    [autoit]

    _GUICtrlTreeView_GetChecked($TreeView, $hItem)

    [/autoit]

    prüfen lasse, ob es gecheckt ist, klappts. Schon sinnlos, vermutlich ist die Funktion _WinAPI_GetDlgCtrlID($hItem) hier einfach ungeeignet.
    Danke für eure Hilfe! :thumbup:

  • Das Problem ist die Hilfe von _GUICtrlTreeView_GetChecked. Dort müsste nicht Handle stehen sondern ID. Und dann $cItem. Musst du dann bei dir auch ändern.