Modify ↓
Opened 17 years ago
Closed 17 years ago
#739 closed Bug (Works For Me)
_GUICtrlTreeView_SetInsertMark with $hItem=0 does not remove the insertion mark
| Reported by: | j0linus | Owned by: | Gary |
|---|---|---|---|
| Milestone: | Component: | Standard UDFs | |
| Version: | 3.2.13.12 | Severity: | None |
| Keywords: | GuiTreeView.au3 | Cc: |
Description
Instead of removing the insertion mark, it is set above/below the first TreeviewItem.
i think reason for this:
If Not IsHWnd($hItem) Then $hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)
so resolution would be:
If Not IsHWnd($hItem) AND $hItem<>0 Then $hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)
By the way i noticed that the check for a valid Treeview handle should be done before the check for a valid TreeItem handle.
Result:
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd) If Not IsHWnd($hItem) AND $hItem<>0 Then $hItem = _GUICtrlTreeView_GetItemHandle($hWnd, $hItem)
Attachments (0)
Change History (1)
comment:1 Changed 17 years ago by Gary
- Resolution set to Works For Me
- Status changed from new to closed
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.
Note: See
TracTickets for help on using
tickets.

Works for me:
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GuiConstantsEx.au3> #include <GuiTreeView.au3> #include <GuiImageList.au3> #include <WindowsConstants.au3> Opt('MustDeclareVars', 1) $Debug_TV = False ; Check ClassName being passed to functions, set to True and use a handle to another control to see it work Global $hImage, $hStateImage _Main() Func _Main() Local $hItem[10], $hChildItem[30], $iYItem = 0, $iRand, $hTreeView Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS) GUICreate("TreeView Set Insert Mark", 400, 300) $hTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE) _GUICtrlTreeView_SetUnicodeFormat($hTreeView, False) GUISetState() _CreateNormalImageList() _GUICtrlTreeView_SetNormalImageList($hTreeView, $hImage) _CreateStateImageList() _GUICtrlTreeView_SetStateImageList($hTreeView, $hStateImage) _GUICtrlTreeView_BeginUpdate($hTreeView) For $x = 0 To 9 $hItem[$x] = _GUICtrlTreeView_Add($hTreeView, 0, StringFormat("[%02d] New Item", $x), 4, 5) _GUICtrlTreeView_SetStateImageIndex($hTreeView, $hItem[$x], 1) For $y = 1 To 3 $hChildItem[$iYItem] = _GUICtrlTreeView_AddChild($hTreeView, $hItem[$x], StringFormat("[%02d] New Child", $y), 0, 3) _GUICtrlTreeView_SetStateImageIndex($hTreeView, $hChildItem[$iYItem], 1) $iYItem += 1 Next Next _GUICtrlTreeView_EndUpdate($hTreeView) $iRand = Random(0, 9, 1) MsgBox(4160, "Information", StringFormat("Set Insert Mark at Item Index[%d]: %s", $iRand, _GUICtrlTreeView_SetInsertMark($hTreeView, $hItem[$iRand]))) MsgBox(4160, "Information", StringFormat("Set Insert Mark at Item 0: %s", _GUICtrlTreeView_SetInsertMark($hTreeView, 0))) ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>_Main Func _CreateNormalImageList() $hImage = _GUIImageList_Create(16, 16, 5, 3) _GUIImageList_AddIcon($hImage, "shell32.dll", 110) _GUIImageList_AddIcon($hImage, "shell32.dll", 131) _GUIImageList_AddIcon($hImage, "shell32.dll", 165) _GUIImageList_AddIcon($hImage, "shell32.dll", 168) _GUIImageList_AddIcon($hImage, "shell32.dll", 137) _GUIImageList_AddIcon($hImage, "shell32.dll", 146) EndFunc ;==>_CreateNormalImageList Func _CreateStateImageList() $hStateImage = _GUIImageList_Create(16, 16, 5, 3) _GUIImageList_AddIcon($hStateImage, "shell32.dll", 3) _GUIImageList_AddIcon($hStateImage, "shell32.dll", 4) EndFunc ;==>_CreateStateImageList