Jump to content

Recommended Posts

Hi,

again i have a special "problem".

I tried very hard to build a UDF for treeview which returns the ordnernumber of the clicked subitem, but i had no success after some hours of work.

I try to explain this problem:

- Mainitem1

-----Subitem11

-----Subitem12

- Mainitem2

-----Subitem21

-----Subitem22

-----Subitem23

- Mainitem3

For example if Subitem22 is clicked i need to know that it is the second Subitem. So the UDF should return "2". And so on!

Maybe there is a simple way to do this; based on the functions that holger and gafrost have made for treeview the last days?

Thanks

FIFI

Link to post
Share on other sites

#include <GUIConstants.au3>
#include <GuiTreeView.au3>
opt ("MustDeclareVars", 1)

Dim $tree, $item1, $subitem1, $subitem2, $item2, $subitem3, $subitem4, $button, $msg, $Status, $parent
GUICreate("GuiTreeView Child #", 392, 254)
$tree = GUICtrlCreateTreeView(10, 10, 200, 200)
$item1 = GUICtrlCreateTreeViewItem("Mainitem1", $tree)
$subitem1 = GUICtrlCreateTreeViewItem("Subitem11", $item1)
$subitem2 = GUICtrlCreateTreeViewItem("Subitem12", $item1)
$item2 = GUICtrlCreateTreeViewItem("Mainitem2", $tree)
$subitem3 = GUICtrlCreateTreeViewItem("Subitem21", $item2)
$subitem4 = GUICtrlCreateTreeViewItem("Subitem22", $item2)
$button = GUICtrlCreateButton("Check", 220, 100, 70, 20)
$Status = GUICtrlCreateLabel("", 0, 234, 392, 20, BitOR($SS_SUNKEN, $SS_CENTER))

GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $button
            GUICtrlSetData($Status, "Child #: " & _GUICtrlTreeViewSubItemSelected($tree))
    EndSelect
WEnd
Exit

Func _GUICtrlTreeViewSubItemSelected($h_treeview)
    Local $count = 1, $h_PItem, $hItem, $h_item
    $hItem = GUICtrlSendMsg($h_treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
    If $hItem == 0 Then Return 0
    $h_PItem = GUICtrlSendMsg($h_treeview, $TVM_GETNEXTITEM, $TVGN_PARENT, $hItem)
    $h_item = GUICtrlSendMsg($h_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $h_PItem)
    Do
        If ($h_item > 0 And $hItem <> $h_item) Then
            $h_item = GUICtrlSendMsg($h_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $h_item)
            $count = $count + 1
        Else
            ExitLoop
        EndIf
    Until $h_item == 0
    Return $count
EndFunc  ;==>_GUICtrlTreeViewSubItemSelected

Edited by gafrost

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...