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 20.03.2000

Diese Seite wurde zuletzt aktualisiert am 20.03.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...

Lotto-Bäume

Zurück...


Anzeige

(-hg) mailto:hg_randomtrees@aboutvb.de

Sind Sie es auch leid, ein TreeView-Steuerelement immer wieder manuell mit Test-Knoten füllen zu müssen? Dann verwenden Sie doch folgende Prozedur, die Ihnen die Arbeit abnimmt und einen Knotenbaum systematisch oder zufällig generiert.


Zufällig oder systematisch zu Testzwecken erzeugte Knoten und Zweige in einem TreeView-Steuerelement

Neben der Übergabe des TreeView-Steuerelements selbst im ersten (und einzigen obligatorischen) Parameter können Sie über eine Reihe weiterer optionaler Parameter den zu generierenden Baum beeinflussen.

First: Standardmäßig wird hier der Buchstabe A übergeben. Damit legen Sie den Anfangsbuchstaben bzw. -String für alle Knoten fest. Alle Knoten werden auf einer Ebene automatisch durchnummeriert und in der Tiefe hierarchisch gegliedert nummeriert.

Count: Gibt die (maximale) Anzahl der Knoten auf einer Eben an.

Level: Gibt an, wie tief der Baum verzweigt werden soll.

SingleRoot: Damit legen Sie fest, ob auf der obersten Ebene nur ein Knoten stehen soll, oder ob entsprechend der Count-Angabe parallel Knoten die oberste Ebene bilden sollen.

Expand: Voreingestellt ist True - alle eingefügten Knoten werden automatisch expandiert.

DoRandom: Legt fest, ob die Werte für Count und Level Obergrenzen darstellen und innerhalb dieser Grenzen zufällig für jeden Zweig und jede Verschachtelung gewählt werden.

RandomExpand: Übergeben Sie hier True, werden die engelegten Zweige zufällig expandiert.

RandomImages: Wenn True, wird jedem Knoten zufällig ein Symbol aus einem mit dem TreeView-Steuerelement verknüpften ImageList-Steuerelement zugeordnet.

LockWindow: Damit unterdrücken Sie Aktualisierung nach jedem Einfügen eines Knotens.

Public Sub FillDummies(tvw As TreeView, _
 Optional First As String = "A", _
 Optional ByVal Count As Integer = 3, _
 Optional ByVal Levels As Integer = 5, _
 Optional ByVal SingleRoot As Boolean, _
 Optional ByVal Expand As Boolean = True, _
 Optional ByVal DoRandom As Boolean, _
 Optional ByVal RandomExpand As Boolean, _
 Optional ByVal RandomImages As Boolean, _
 Optional ByVal LockWindow As Boolean = True)

  Dim nNode As Node
  Dim i As Integer
  Dim nNodes As Nodes
  Dim nImagesCount As Integer
  Dim nImageID As Integer
  
  If LockWindow Then
    LockWindowUpdate tvw.hWnd
  End If
  If DoRandom Then
    Randomize Timer
  End If
  If RandomImages Then
    nImagesCount = tvw.ImageList.ListImages.Count
  Else
    nImageID = 1
  End If
  Set nNodes = tvw.Nodes
  With nNodes
    If SingleRoot Then
      If RandomImages Then
        nImageID = Int(nImagesCount * Rnd + 1)
      End If
      Set nNode = .Add(, , , First, nImageID)
      With nNode
        .Key = .FullPath
        If RandomExpand Then
          .Expanded = CBool(Int((0 + 2) * Rnd - 1))
        Else
          .Expanded = Expand
        End If
      End With
      zFillDummies nNodes, nNode, Count, Levels - 1, _
       DoRandom, Expand, RandomExpand, nImagesCount
    Else
      For i = 1 To Count
        If RandomImages Then
          nImageID = Int(nImagesCount * Rnd + 1)
        End If
        Set nNode = .Add(, , , First & i, nImageID)
        With nNode
          .Key = .FullPath
          If RandomExpand Then
            .Expanded = CBool(Int((0 + 2) * Rnd - 1))
          Else
            .Expanded = Expand
          End If
        End With
        zFillDummies nNodes, nNode, Count, Levels - 1, _
         DoRandom, Expand, RandomExpand, nImagesCount
      Next 'i
    End If
  End With
  If LockWindow Then
    LockWindowUpdate 0&
  End If
End Sub

Private Sub zFillDummies(Nodes As Nodes, ParentNode As Node, _
 ByVal Count As Integer, Level As Integer, _
 ByVal DoRandom As Boolean, ByVal Expand As Boolean, _
 ByVal RandomExpand As Boolean, ByVal RandomImages As Integer)

  Dim i As Integer
  Dim nNode As Node
  Dim nLevel As Integer
  Dim nCount1 As Integer
  Dim nCount2 As Integer
  Dim nImageID As Integer
  
  If DoRandom Then
    nCount1 = Int(Count * Rnd + 1)
  Else
    nCount1 = Count
  End If
  nImageID = 1
  For i = 1 To nCount1
    If RandomImages Then
      nImageID = Int(RandomImages * Rnd + 1)
    End If
    Set nNode = Nodes.Add(ParentNode.Key, tvwChild, , _
     ParentNode.Text & i, nImageID)
    With nNode
      .Key = .FullPath
      If RandomExpand Then
        .Expanded = CBool(Int((0 + 2) * Rnd - 1))
      Else
        .Expanded = Expand
      End If
    End With
    If Level > 0 Then
      If DoRandom Then
        nCount2 = Int(Count * Rnd + 1)
        nLevel = Int(Level * Rnd + 1)
      Else
        nCount2 = Count
        nLevel = Level
      End If
      zFillDummies Nodes, nNode, nCount2, nLevel - 1, _
       DoRandom, Expand, RandomExpand, RandomImages
    End If
  Next 'i
End Sub


Beispiel-Projekt RondomTreesTest (randomtrees.zip - ca. 6 KB)


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

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