--- Soumis par Dev Ashish ---
Permettre la sélection d'une branche de Treeview
Le contrôle TreeView inclus avec l'ODE ne permet pas de choisir toute une branche de par la propriété FullRowSelect, contrairement à son cousin VB6: si FullRowSelect est vrai, tout le reste de la branche est choisi avec le noeud.
On peut cependant utiliser la fonction API SetWindowLong pour spécifier le style additionnnel du TreeView, nommément TVS_FULLROWSELECT, ce qui nous redonne la fonctionnalité de FullRowSelect.
Inclus, deux fonctions qui permettent de sélectionner le comportement désiré pour un TreeView.
'*************** Code Start ***************** ' 'Version 4.71 ou plus récentre de comctl32 'Permettre la sélection de toute la branche dans la vue de l'arbre Private Const TVS_FULLROWSELECT = &H1000 'Recupère le style de la fenêtre Private Const GWL_STYLE = (-16) Private Declare Function apiGetWindowLong Lib "user32" _ Alias "GetWindowLongA" _ (ByVal hWnd As Long, _ ByVal nIndex As Long) _ As Long Private Declare Function apiSetWindowLong Lib "user32" _ Alias "SetWindowLongA" _ (ByVal hWnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) _ As Long Function fTvwFullRowSelect(tvw As Control) As Boolean 'Amorce le comportement de sélection de toute la branche d'un treeview 'Le contrôle Treeview fourni avec l'ODE possède 'déjà un hWnd, inutile donc de passer par un GetFocus Dim lngStyle As Long 'Lecture du comportement actuel lngStyle = apiGetWindowLong(tvw.hWnd, GWL_STYLE) 'on "ajoute" notre style lngStyle = lngStyle Or TVS_FULLROWSELECT 'qui deviendra le nouveau style fTvwFullRowSelect = (Not apiSetWindowLong(tvw.hWnd, _ GWL_STYLE, lngStyle) = 0) End Function Function fResetTvwFullRowSelect(tvw As Control) As Boolean 'Amorce le comportement par défaut Dim lngStyle As Long 'Lecture du comportement actuel lngStyle = apiGetWindowLong(tvw.hWnd, GWL_STYLE) 'enlever le comportement de sélection par branche, si présent lngStyle = lngStyle And Not TVS_FULLROWSELECT 'qui deviendra le nouveau comportement fResetTvwFullRowSelect = (Not apiSetWindowLong(tvw.hWnd, _ GWL_STYLE, lngStyle) = 0) End Function '*************** Code End *****************