Announcement

Collapse
No announcement yet.

Menubaum über TreeView realisieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Menubaum über TreeView realisieren

    Hallo zusammen,

    frohes neues Jahr erstmal.
    Stehe vor dem Problem, dass ich einen Menubaum über das Treeview realisieren möchte. Habe aber derzeit keine Idee, wie ich das am besten anstellen kann.

    Eine Datenbankstruktur zur Erweiterung des Menubaumes habe ich mir schon erstellt.

    Name (Vollständiger Pfad zum Objekt, z.B. RootEbene1.SubEbene1.Menupunkt1)
    Parent (Pfad des Vater-Objektes, z.B. RootEbene1.SubEbene1)
    Image (Integer)
    Index (Integerwert zur Sortierung)
    Caption (Anzeigetext)
    Aktion (String z.B. Funktion OpenForm())

    Hat jmd. eine Idee, wie ich das nun im TreeView sinnvoll ausgeben kann ?

    Die Datensätze könnten z.B. wie folgt aussehen

    RootEbene1;Root;0;100;
    RootEbene1.SubEbene1;RootEbene1;0;100;
    RootEbene1.SubEbene1.Menupunkt1;RootEbene1.SubEben e1;1;100;Menupunkt1;OpenForm('Menupunkt1')

    Möchte die Daten zusätzlich vorher in einen Array temporär zwischenspeichern, damit ich die Daten nicht immer wieder aus der DB auslesen muss. Problem ist nur, dass ich nicht weiß, wie man das am sinnvollsten macht....

    Vielen Dank schonmal für eure Hilfe.

    Freundliche Grüße

    Sebastian Winchenbach

  • #2
    Habe jetzt schonmal eine erste Sub geschrieben mit der ich bis in die zweite Ebene den Treeview füllen kann. Allerdings bringt mir das so nichts...

    Mir stellt sich noch die Frage, was der Index einer node ist. der Index in der gesamten Treeview oder der index in einem Ast.

    Code:
    Public Sub Init()
                Dim row, parentrow As DataRow
                Dim parentindex As Integer
                Dim childindex As Integer
                Dim childnode As TreeNode
                Dim nodearray As TreeNode()
                Dim treeMenuEbene As TreeView
    
                frmMainMenu.treeMenu.Nodes.Clear()
    
                'Stammmenupunkt erzeugen
                childnode = New TreeNode("Webhost System")
                childnode.Name = "Webhost System"
                childnode.Text = "Webhost System"
    
                frmMainMenu.treeMenu.Nodes.Add(childnode)
    
                For iEbene As Integer = 0 To GetMenuEbenen()
                    'treeMenuEbene.Nodes = treeMenuEbene.Nodes(iEbene).Nodes
    
                    For iEintrag As Integer = 0 To GetEbeneMenuEntries(iEbene)
                        dtMenu = oMandant.oServer.GetDataTable("SELECT * FROM SysMenu WHERE Ebene=" & iEbene & " ORDER BY 'Parent', 'Index'")
                        row = dtMenu.Rows(iEintrag)
    
                        If (row("Parent") <> 0) Then
                            dtMenu = oMandant.oServer.GetDataTable("SELECT * FROM SysMenu WHERE MenuID=" & row("Parent").ToString & " ORDER BY 'Parent', 'Index'")
                            parentrow = dtMenu.Rows(0)
                            nodearray = frmMainMenu.treeMenu.Nodes.Find(parentrow("Name").ToString, True)
                            childindex = nodearray(0).Index
                        Else
                            parentindex = 0
                        End If
    
                        'Child erzeugen
                        childnode = New TreeNode(row("Name").ToString)
                        childnode.Name = row("Name").ToString
                        childnode.Text = row("Caption").ToString
    
                        'Childnode unter parentindex eintragen
                        If (iEbene = 0) Then
                            frmMainMenu.treeMenu.Nodes(parentindex).Nodes.Add(childnode)
                        Else
                            frmMainMenu.treeMenu.Nodes(parentindex).Nodes(childindex).Nodes.Add(childnode)
                        End If
                    Next
                Next
                'InitMenu = arrMenu
            End Sub
    Code:
    'treeMenuEbene.Nodes = treeMenuEbene.Nodes(iEbene).Nodes
    Funktioniert leider auch nicht, da Nodes ReadOnly ist....
    so hätte ich immer eine Ebene mehr weitergeben können!

    Hat noch jmd. eine Idee, wie ich diese Treeview so füllen kann, dass die Anzahl der Ebenen keine Rolle spielt ?

    Schönen Abend und Gruß

    MasterBasti

    Comment


    • #3
      Noch nie jmd. mit einem treeView gearbeitet ?
      Bin Einsteiger in VB.NET und bin für jede Hilfe dankbar.

      Hatte eigentlich mit mehr Rückmeldung gerechnet......
      Irgendjemand einen Tipp, wo ich mehr über den Aufbau von Mehrstufigen TreeViews erhalten kann ? Ich denke, dass sollte nichts ungewöhnliche sein, oder ?

      Comment

      Working...
      X