Modify

Opened 6 years ago

Closed 6 years ago

#3585 closed Bug (Fixed)

pb _GUICtrlTreeView_Sort not sorting level 1 treeview -- With Solution

Reported by: gilles@… Owned by: Jpm
Milestone: 3.3.15.1 Component: AutoIt
Version: 3.3.14.2 Severity: None
Keywords: GUICtrlTreeView_Sort Cc:

Description

with deep tree, _GUICtrlTreeView_Sort does not sort it.

Proposed solution : for detail see post

https://www.autoitscript.com/forum/topic/192179-solution-proposed-pb-_guictrltreeview_sort-not-sorting-level-1-treeview/

Solution

; #FUNCTION# ====================================================================================================================
; Author ........: Gary Frost (gafrost)
; Modified.......: mlipok, guinness, gillesg
; Ths time optimized ===============================================================================================================================
Func _GUICtrlTreeView_Sort3($hWnd)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)

    Local $iItemCount = _GUICtrlTreeView_GetCount($hWnd)
    If $iItemCount Then
        Local $aTreeView[$iItemCount], $i=0
        ; get only A child at each level
        Local $hHandle = _GUICtrlTreeView_GetFirstItem($hWnd)
        $aTreeView[1]=$hHandle
        $aTreeView[0]=2
        __GUICtrlTreeView_SortGetFirstChild($hWnd, $hHandle, $aTreeView )
        redim $aTreeView[$aTreeView[0]]
        $aTreeView[0]=0

        ConsoleWrite(_ArrayToString($aTreeView,@CRLF)&@CRLF)
        for $i =0 to UBound($aTreeView) -1
            _SendMessage($hWnd, $TVM_SORTCHILDREN, 0, $aTreeView[$i], 0, "wparam", "handle") ; Sort the items in root
        NExt
    EndIf

EndFunc   ;==>_GUICtrlTreeView_Sort3

func __GUICtrlTreeView_SortGetFirstChild($hWnd, $hItem, byref $aTreeView)
    Local $hChild = _GUICtrlTreeView_GetFirstChild($hWnd, $hItem)
    if $hChild <> 0 then
        $aTreeView[$aTreeView[0] ]= $hChild
        $aTreeView[0]+=1
        __GUICtrlTreeView_SortGetFirstChild($hWnd,$hChild,$aTreeView)
    EndIf
    local $hNext = _GUICtrlTreeView_GetNextSibling($hWnd, $hItem)
    if $hNext <> 0 then __GUICtrlTreeView_SortGetFirstChild($hWnd,$hnext,$aTreeView)

EndFunc

Hope it help

Attachments (0)

Change History (1)

comment:1 Changed 6 years ago by Jpm

  • Milestone set to 3.3.15.1
  • Owner set to Jpm
  • Resolution set to Fixed
  • Status changed from new to closed

Fixed by revision [11958] in version: 3.3.15.1

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.

Add Comment

Modify Ticket

Action
as closed The owner will remain Jpm.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.