Je cherche à classer par arborescences, mais jusqu'ici sans succès, ce qui donnerai 2 arborescences, SONY et Xiaomi.
On va peut-être croire que je le fait exprès mais c'est pas le cas

Merci d'avance à tous

Code : Tout sélectionner
SONY
+ Smartphone
+ Z2
+ Z5
+ XZ Premium
+ François Pignon
+ Dupont Durand
+ General
+ HDR
+ ...
Xiaomi
+ Drone
+ FIMI X8 SE
+ FIMI A3
+ François Pignon
+ Dupont Durand
+ General
+ HDR
+ ...
Code : Tout sélectionner
; https://www.autoitscript.com/forum/topic/137148-_guictrltreeview_getselection-help/?do=findComment&comment=959711
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
; Set flag
$fFlag = False
; Create GUI
$hGUI = GUICreate("Test", 500, 500)
$hTreeView = _GUICtrlTreeView_Create($hGUI, 10, 10, 480, 480, -1, $WS_EX_CLIENTEDGE+$WS_EX_DLGMODALFRAME+$WS_EX_CLIENTEDGE) ; $WS_EX_CLIENTEDGE, $WS_EX_DLGMODALFRAME), $WS_EX_CLIENTEDGE)
; ===> Read from list of files "Xiaomi,Drone,FIMI X8 SE,François Pignon,General.ini" etc..
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,François Pignon,General,HDR.ini')
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,Dupont Durand,General,HDR.ini')
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI A3,François Pignon,General,HDR.ini')
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,François Pignon,Vivid.ini')
_TreeView( $hTreeView, 'SONY,SmartPhone,Z2,Dupont Durand,4K.ini') ; <=== SmartPhone
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,Dupont Durand,BW.ini')
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,François Pignon,Art.ini')
_TreeView( $hTreeView, 'SONY,SmartPhone,XZ Premium,François Pignon,4K.ini') ; <=== SmartPhone
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,Dupont Durand,Film.ini')
_TreeView( $hTreeView, 'SONY,SmartPhone,Z2,François Pignon,1080p.ini') ; <=== SmartPhone
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,François Pignon,Clasic.ini')
_TreeView( $hTreeView, 'SONY,SmartPhone,Z5,François Pignon,4K.ini') ; <=== SmartPhone
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,Dupont Durand,Nostalgia.ini')
_TreeView( $hTreeView, 'Xiaomi,Drone,FIMI X8 SE,François Pignon,F-Log.ini')
; <=== Read from list of files "Xiaomi,Drone,FIMI X8 SE,François Pignon,General.ini" etc..
;~ _GUICtrlTreeView_Expand($hTreeView)
GUISetState()
; Register message
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Loop
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _TreeView( $id_Ctrl, $iSet) ; $iSet = 'General,Vivid,BW,Art,Film,Clasic,Nostalgia,F-Log.ini'
If Not IsHWnd($id_Ctrl) Then Local $hWnd = GUICtrlGetHandle($id_Ctrl)
$aSetExt = StringSplit( $iSet, ".")
$aSet = StringSplit( $aSetExt[1], ",")
; Create handle array
Global $aItem_Handles[UBound($aSet)] ; $aItem_Handles[$j]
_GUICtrlTreeView_BeginUpdate($hTreeView) ; <============ Start UpDate
For $i = 1 To UBound($aSet) - 1
If $i = 1 Then
$aItem_Handles[$i] = _GUICtrlTreeView_Add($hTreeView, 0, $aSet[$i])
Else
If $i = UBound($aSet) - 1 Then
$aItem_Handles[$i] = _GUICtrlTreeView_AddChild( $hTreeView, $Last, $iSet)
Else
$aItem_Handles[$i] = _GUICtrlTreeView_AddChild( $hTreeView, $Last, $aSet[$i])
EndIf
EndIf
Local $Last = $aItem_Handles[$i]
If $i = UBound($aSet) - 1 Then
_GUICtrlTreeView_SetIcon( $hTreeView, $Last, "shell32.dll", 72)
Else
_GUICtrlTreeView_SetIcon( $hTreeView, $Last, "shell32.dll", 3)
EndIf
ConsoleWrite('$aItem_Handles[$i='&$i&']='&$aItem_Handles[$i] &@TAB&@TAB& '$aSet[$i='&$i&']='&$aSet[$i] &@CRLF)
Next
_GUICtrlTreeView_EndUpdate($hTreeView) ; <============ End UpDate
ConsoleWrite(@CRLF)
EndFunc
; Intercept the NOTIFY leassages
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
; Read the data
Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
; See if it was our treeview
Switch $hWndFrom
Case $hTreeview
; Work out which item is under cursor
$aPos = GUIGetCursorInfo($hGUI)
$iIndex = _GUICtrlTreeView_HitTestItem($hTreeview, $aPos[0] - 10, $aPos[1] - 10)
; Look for code
Switch $iCode
Case $NM_CLICK
; Get item text
ConsoleWrite('$iIndex='&$iIndex &@TAB& "You clicked L button: " & _GUICtrlTreeView_GetText($hTreeview, $iIndex) & @CRLF)
;~ For $i = 0 To $aItem_Handles[0]
;~ If $aItem_Handles[$i] = $iIndex Then
;~ ConsoleWrite("You clicked: " & _GUICtrlTreeView_GetText($hTreeview, $aItem_Handles[$i]) & @CRLF)
;~ ExitLoop
;~ EndIf
;~ Next
Case $NM_RCLICK
; Click on that item
ConsoleWrite('$iIndex='&$iIndex &@TAB& "You clicked R button: " & _GUICtrlTreeView_GetText($hTreeview, $iIndex) & @CRLF)
;~ For $i = 0 To $aItem_Handles[0]
;~ If $aItem_Handles[$i] = $iIndex Then
;~ _GUICtrlTreeView_ClickItem($hTreeview, $aItem_Handles[$i])
;~ ExitLoop
;~ EndIf
;~ Next
EndSwitch
EndSwitch
EndFunc