ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 18.04.2000

Diese Seite wurde zuletzt aktualisiert am 18.04.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Baum mit hohlen Früchten

Zurück...


Anzeige

(-hg) mailto:hg_dummynodes@aboutvb.de

Es kann mitunter sehr lange dauern, bis ein TreeView-Steuerelement bis in die letzten Verästelungen der Knoten gefüllt ist. Wenn etwa die Ordner-Struktur einer Festplatte eingelesen werden soll, spielt da zudem nicht nur die nicht gerade berauschende Performance des TreeView-Steuerelements eine Rolle, sondern auch das Lesen der Festplatte dauert seine Zeit und strapaziert die Geduld des Anwenders.

Wesentlich flotter geht das vonstatten, und außerdem auch noch den Arbeitsspeicher entlastend, wenn Sie zunächst nur die oberste Ebene der Ordnerstruktur bzw. einer beliebigen anderen Knotenstruktur einlesen. Sie brauchen allerdings nicht auf die Kennzeichnung mit dem Pluszeichen derjenigen Knoten zu verzichten, die Unter-Ordner enthalten sollen.

Fügen Sie einfach einen Dummy-Knoten in diese Knoten ein. Und wenn der Anwender (oder Ihr Code) den Knoten öffnet und das Expand-Ereignis des TreeView-Steuerelements ausgelöst wird, entfernen Sie diesen Dummy-Knoten wieder und füllen den geöffneten Knoten mit dem ihm zugedachten Inhalt. Das kann dann zwar auch wieder etwas dauern, wird aber von den Anwendern eher verschmerzt. Sie können natürlich auch bei entsprechender Auslegung Ihrer Anwendung nach dem ersten Füllen der obersten Ebene und der Anzeige des TreeViews im Hintergrund nach und nach die Knoten füllen, etwa durch einen separaten, in einen ActiveX-EXE-Server ausgelagerten Programmfaden (Thread), während der Anwender bereits mit der Anwendung arbeiten kann.

Das folgende Beispiel zeigt Ihnen, wie Sie solche Dummy-Knoten einfügen und wieder entfernen. Damit die Wiederverwendung des Prinzips ein wenig bequemer wird, habe ich den Code dazu in die Prozeduren TvwAddDummyNode und TvwRemoveDummyNode eines Standard-Moduls gepackt.

' z.B. in einem Form:

Private mKeys As Long

Private Sub Form_Load()
  Dim i As Integer
  Dim nNode As Node
  
  With tvw.Nodes
    For i = 1 To 5
      mKeys = mKeys + 1
      Set nNode = .Add(, , "I" & mKeys, "Node " & i, "folder")
      TvwAddDummyNode tvw.Nodes, nNode
    Next 'i
  End With
End Sub

Private Sub tvw_Expand(ByVal Node As MSComctlLib.Node)
  Dim i As Integer
  Dim nNode As Node
  
  TvwRemoveDummyNode tvw.Nodes, Node
  With tvw.Nodes
    For i = 1 To 5
      mKeys = mKeys + 1
      Set nNode = .Add(Node.Key, tvwChild, "I" & mKeys, _
       "Node " & i, "folder")
      TvwAddDummyNode tvw.Nodes, nNode
    Next 'i
  End With
End Sub


' Standard-Modul modDummyNodes:

Public Sub TvwAddDummyNode(Nodes As Nodes, Node As Node)
  With Node
    Nodes.Add .Key, tvwChild, "§" & .Key
  End With
End Sub

Public Sub TvwRemoveDummyNode(Nodes As Nodes, Node As Node)
  With Node
    If .Children Then
      With .Child
        If Left$(.Key, 1) = "§" Then
          Nodes.Remove .Key
        End If
      End With
    End If
  End With
End Sub

Beispiel-Projekt DummyNodes (Visual Basic 5) (dummynodes5.zip - ca. 3,2 KB)
Beispiel-Projekt DummyNodes (Visual Basic 6) (dummynodes6.zip - ca. 3,2 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer