treeview difficulties

  • Thread starter Dale_Fye via AccessMonster.com
  • Start date
D

Dale_Fye via AccessMonster.com

I'm working on adding a treeview control to a form in my mdb file (using
Access 2007).

I've added the control and have written some code to populate it. I've tried
this with a recursive subroutine, and it did not work (displayed the root
nodes but no children), so I'm attempting to populate it with just a couple
of nodes, each with two subordinate nodes, using the following code. I get
no errors when I run this code, but my tree view still only displays the root
level nodes (Node 1 and Node 2), and not the children.

Any help would be greatly appreciated

Public Sub TreeTest(tvw As MSComctlLib.TreeView)

Dim nd As MSComctlLib.Node
Dim ndRoot As Node

Set nd = tvw.Nodes.Add(, , "A1", "Node 1")
Set ndRoot = nd

Set nd = tvw.Nodes.Add(ndRoot.Key, tvwChild, "A2", "Node 1.1")
Set nd = tvw.Nodes.Add(ndRoot.Key, tvwChild, "A3", "Node 1.2")

Set nd = tvw.Nodes.Add(, , "A4", "Node 2")
Set ndRoot = nd

Set nd = tvw.Nodes.Add(ndRoot.Key, tvwChild, "A5", "Node 2.1")
Set nd = tvw.Nodes.Add(ndRoot.Key, tvwChild, "A6", "Node 2.2")

End Sub

My settings for the control are:
Style: 5 - tvwTrelinesPictureText
LineStyle: 1 - tvwRootLines (no difference when I change this)
LabelEdit: 0 - tvwAutomatic
BorderStyle:0 - ccNone
Appearance:1 - 3D
Enabled - Checked
Scroll - Checked
 
G

Graham R Seach

Dale,

Public Sub TreeTest(tvw As MSComctlLib.TreeView)
Dim nd As Node
Dim ndRoot As Node

Set ndRoot = tvw.Nodes.Add(, , "A1", "Node 1")
Set nd = tvw.Nodes.Add(ndRoot, tvwChild, "A2", "Node 1.1")
Set nd = tvw.Nodes.Add(ndRoot, tvwChild, "A3", "Node 1.2")

Set ndRoot = tvw.Nodes.Add(, , "A4", "Node 2")
Set nd = tvw.Nodes.Add(ndRoot, tvwChild, "A5", "Node 2.1")
Set nd = tvw.Nodes.Add(ndRoot, tvwChild, "A6", "Node 2.2")

Set nd = Nothing
Set ndRoot = Nothing
End Sub

If you want to make sure a specific node is visible, then use the following
code:
nd.EnsureVisible

Regards,
Graham R Seach
Microsoft Access MVP
Sydney, Australia
 
D

dch3

One thing to be aware of is that if you populate the treeview from multiple
tables where an Autonumber supplies the primary key, you can't use the
primary key for the records as is. The treeView won't like the same key being
used twice even if it originated from two different tables - the treeview's
not that smart. So if you're listing Vendors and Products as in the list
below you have to have some way making the keys unique. My solution was to
format the keys in a very specific manner as in 08PROVIDER1 and 07PRODUCT1. I
then pass the treeView key to a function that extracts the table keys. The
function basically takes the first two characters of the treeView key using
Left() and then uses a Mid() to pull the key. The first two characters
indicate the length of the qualifier and which allows us to mathmatically
find the start of the tables key.

Starline Limosuinse (1) (08PROVIDER1)
Town Car (1)(07PRODUCT1)
Limosuine (2)(07PRODUCT2)
Associated Transportation (2)(08PROVIDER2)
Town Car (1)(07PRODUCT1)
Limosuine (2)(07PRODUCT2)
Mini-Bus (3)(07PRODUCT3)
First Class Livery (3)(08PROVIDER3)
Mini-Bus (3)(07PRODUCT3)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top