J'ai un temps de rafraîchissement beaucoup trop long (souris bloquée etc...)lorsque j'utilise la méthode "clear" du treeview(Le treeview étant ,avant l'appel de la méthode, rempli de noeuds). Est-ce que quelqu'un connait un moyen de vider le treeview instantanément?
Je cherche aussi un bout de code exemple pour le drag n drop entre 2 treeview.
Merci d'avance
H.
A voir également
Aide pour méthode clear du treeview & drag n drop entre 2 treeview
C'est pas vraiment l'endroit pour poser ta question... tu aurais du le faire dans le forum destiné à cela. C'est pas grâve !
Voici le code qui permet de vider un treeview via API:
'DECLARATIONS CONSTANTES
Const TV_FIRST As Long = &H1100
Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Const TVGN_ROOT As Long = &H0
Const WM_SETREDRAW As Long = &HB
'DECLARATION API
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Sub ClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
SendMessageLong tvHwnd, WM_SETREDRAW, False, 0
Do
lNodeHandle = SendMessageLong(tvHwnd, TVM_GETNEXTITEM, TVGN_ROOT, 0)
If lNodeHandle > 0 Then
SendMessageLong tvHwnd, TVM_DELETEITEM, 0, lNodeHandle
Else
Exit Do
End If
Loop
SendMessageLong tvHwnd, WM_SETREDRAW, True, 0
End Sub
Exemple: ClearTreeView(MonTreeview.Hwnd)
Voilà, j'espère que cette méthode sera plus efficace...
P.S: une façon de gagner du temps est de rendre invisible le treeview pendant l'action, puis de le rendre visible à nouveau... Cela permet d'éviter le rafraîchissement de celui-ci, ce qui prend pas mal de ressources aussi...
23 févr. 2008 à 19:35
4 avril 2002 à 11:30
A++
Crazyht
4 avril 2002 à 11:10
C'est pas vraiment l'endroit pour poser ta question... tu aurais du le faire dans le forum destiné à cela. C'est pas grâve !
Voici le code qui permet de vider un treeview via API:
'DECLARATIONS CONSTANTES
Const TV_FIRST As Long = &H1100
Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Const TVGN_ROOT As Long = &H0
Const WM_SETREDRAW As Long = &HB
'DECLARATION API
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Sub ClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
SendMessageLong tvHwnd, WM_SETREDRAW, False, 0
Do
lNodeHandle = SendMessageLong(tvHwnd, TVM_GETNEXTITEM, TVGN_ROOT, 0)
If lNodeHandle > 0 Then
SendMessageLong tvHwnd, TVM_DELETEITEM, 0, lNodeHandle
Else
Exit Do
End If
Loop
SendMessageLong tvHwnd, WM_SETREDRAW, True, 0
End Sub
Exemple: ClearTreeView(MonTreeview.Hwnd)
Voilà, j'espère que cette méthode sera plus efficace...
P.S: une façon de gagner du temps est de rendre invisible le treeview pendant l'action, puis de le rendre visible à nouveau... Cela permet d'éviter le rafraîchissement de celui-ci, ce qui prend pas mal de ressources aussi...
Tchao
NéoB
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.