Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" <d.bostmambrun@wanadoo.fr> a écrit dans le message de
news:c70vfn$4vr$1@news-reader2.wanadoo.fr...
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut
Beau boulot... Si c'est aussi rapide que tu le dis... C'est pas mal.
Quitte à utiliser les api. Ne serai-t-il pas possible d'utiliser un
destructeur pour la collection des Nodes ?
@+
LJ
"Guy DETIENNE" a écrit dans le message de
news:Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du
TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sontaffichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut
Beau boulot... Si c'est aussi rapide que tu le dis... C'est pas mal.
Quitte à utiliser les api. Ne serai-t-il pas possible d'utiliser un
destructeur pour la collection des Nodes ?
@+
LJ
"Guy DETIENNE" <tchao.net@nospam.skynet.be> a écrit dans le message de
news:etkaL2CMEHA.3216@tk2msftngp13.phx.gbl...
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du
TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" <d.bostmambrun@wanadoo.fr> a écrit dans le message de
news:c70vfn$4vr$1@news-reader2.wanadoo.fr...
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut
Beau boulot... Si c'est aussi rapide que tu le dis... C'est pas mal.
Quitte à utiliser les api. Ne serai-t-il pas possible d'utiliser un
destructeur pour la collection des Nodes ?
@+
LJ
"Guy DETIENNE" a écrit dans le message de
news:Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du
TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sontaffichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" <d.bostmambrun@wanadoo.fr> a écrit dans le message de
news:c70vfn$4vr$1@news-reader2.wanadoo.fr...
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" <d.bostmambrun@wanadoo.fr> a écrit dans le message de
news:c70vfn$4vr$1@news-reader2.wanadoo.fr...
Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance
Salut ;O)
Une éventuelle solution serait de supprimer tous les éléments du TreeView
avant la fermeture du formulaire.
La méthode Clear du TreeView étant super lente lorsqu'il y a bcp de
noeuds,
un nettoyage via API reste le plus rapide. J'ai testé est c'est
phénoménale.
Essaye ceci :
A coller dans un module :
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 Const TV_FIRST As Long = &H1100
Private Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Private Const TVM_DELETEITEM As Long = (TV_FIRST + 1)
Private Const TVGN_ROOT As Long = &H0
Private Const WM_SETREDRAW As Long = &HB
Public Sub fClearTreeView(ByVal tvHwnd As Long)
Dim lNodeHandle As Long
' Turn off redrawing on the Treeview for more speed improvements
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
Utilisation :
Call fClearTreeView(Me.MonListView.Hwnd)
J'espère que cela répondra à ton problème.
Guy
"DB" a écrit dans le message de
news:c70vfn$4vr$Bonjour !
J'ai un formulaire avec un treeview qui affiche 5000 noeuds.
Lorsque j'ouvre le formulaire, l'affichage des 5000 noeuds prend 1,5
seconde.
Lorsque je ferme le formulaire, cela prends 5 secondes !!!!.
Pourtant je met la variable du treeview à nothing lorsque les noeuds
sont
affichés.
Plus il y a de noeuds plus le formulaire est long à fermer !!!?
Je ne comprends pas.
Merci d'avance