Modify

Opened 8 years ago

Closed 8 years ago

#3585 closed Bug (Fixed)

pb _GUICtrlTreeView_Sort not sorting level 1 treeview -- With Solution

Reported by: gilles@… Owned by: J-Paul Mesnage
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 by J-Paul Mesnage, 8 years ago

Milestone: 3.3.15.1
Owner: set to J-Paul Mesnage
Resolution: Fixed
Status: newclosed

Fixed by revision [11958] in version: 3.3.15.1

Modify Ticket

Action
as closed The owner will remain J-Paul Mesnage.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.