Treeview-Control schnell löschen |
|
Auch in VBA kann man auf externe Controls zurückgreifen, um zusätzliche Funktionen
zur Verfügung zu stellen oder zu nutzen. Mit dem TreeView-Control steht eine Baumstruktur wie im Explorer zur Anzeige von Einträge zur Verfügung. Die einzelnen Einträge werden dabei als Nodes bezeichnet und können weitere Untereintäge besitzen. Intern werden die einzelnen Nodes über den Index verwaltet. Beim Löschen tritt nun das Problem auf, dass ein Node erst gelöscht werden kann, wenn zuvor evtl. vorhandene Untereinträge (Childs) gelöscht wurden. Bei vielen verschachtelten Einträgen dauert das komplette Löschen einer Baumstruktur einige Zeit. Mit dem API SendMessageLong lässt sich sehr schnell die komplette Baumstruktur löschen, ohne erst alle Nodes prüfen zu müssen. Public 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 Der Aufruf kann z.B. innerhalb der Userform über das Click-Ereignis einer Schaltfläche
erfolgen. Dazu wird dem Aufruf als Parameter die Zugriffsnummer (hWnd) des Controls mitgegeben. TreeView.ClearTreeView (UserForm1.TreeView1.hWnd) Beispiel zum Setzen und Löschen von TreeView-Nodes (es wird eine Userform mit dem TreeView-Control und zwei Schaltflächen benötigt): Private Sub CommandButton1_Click() ' Treeview füllen For i = 1 To 10 Set nodX = TreeView1.Nodes.Add(, , "_" & Str(i), i) For j = 1 To 100 Set ctrTree = TreeView1.Nodes.Add("_" & Str(i), tvwChild, Str(i) & Str(j), j) Next j Next i End Sub Private Sub CommandButton2_Click() ' Treeview löschen ClearTreeView Me.TreeView1.hWnd End Sub Über die Schaltfläche CommandButton1 wird die Baumstruktur mit 10 Einträgen á 100 Untereinträgen gefüllt und mit CommandButton2 wieder gelöscht. |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2214325 insgesamt | Seitenaufrufe: 37 | Letzte Änderung: 24.06.2006 | © 2001-18 Christian Freßdorf | ||||
Wo die Natur nicht will, da ist die Arbeit umsonst. Seneca |
powered by phpCMS and PAX |