|
APIs: Permettre la sélection d'une branche de Treeview |
Author(s) Dev Ashish |
|
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 additionnel 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.
Private Const TVS_FULLROWSELECT = &H1000
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
Dim lngStyle As Long
lngStyle = apiGetWindowLong(tvw.hWnd, GWL_STYLE)
lngStyle = lngStyle Or TVS_FULLROWSELECT
fTvwFullRowSelect = (Not apiSetWindowLong(tvw.hWnd, _
GWL_STYLE, lngStyle) = 0)
End Function
Function fResetTvwFullRowSelect(tvw As Control) As Boolean
Dim lngStyle As Long
lngStyle = apiGetWindowLong(tvw.hWnd, GWL_STYLE)
lngStyle = lngStyle And Not TVS_FULLROWSELECT
fResetTvwFullRowSelect = (Not apiSetWindowLong(tvw.hWnd, _
GWL_STYLE, lngStyle) = 0)
End Function
|