首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Treeview对象变量中的Treeview控件集?

Treeview对象变量中的Treeview控件集?
EN

Stack Overflow用户
提问于 2014-04-08 16:40:34
回答 1查看 2.5K关注 0票数 3

我正在尝试设置Treeview对象,设置节点,然后更新控件以使值具有适当的格式化。现在,我有下面的代码,当我让它设置一个控件,而不是一个变量的控件时,它可以工作。如何从变量设置本地控件?

代码语言:javascript
复制
Private Sub Form_Load()
Dim iml As ImageList
Dim TreeView0 As TreeView
Set TreeView0 = New TreeView
Set iml = New ImageList

iml.ListImages.Add , "Open", LoadPicture("Folder\Open.bmp")
iml.ListImages.Add , "Closed", LoadPicture("Folder\Close.bmp")
iml.ListImages.Add , "Document", LoadPicture("Folder\Document.bmp")
iml.ListImages.Add , "test", LoadPicture("Folder\Document.bmp")
iml.ListImages.Add , "test2", LoadPicture("Folder\Document.bmp")
iml.ListImages.Add , "test3", LoadPicture("Folder\Document.bmp")
iml.ListImages.Add , "test4", LoadPicture("Folder\Document.bmp")
iml.ListImages.Add , "test5", LoadPicture("Folder\Document.bmp")

Set TreeView0.ImageList = iml

TreeView0.Nodes.Add , , "Open"
TreeView0.Nodes.Add , , "Closed"
TreeView0.Nodes.Add "Open", tvwChild, "Document"
TreeView0.Nodes.Add "Open", tvwChild, "test"
TreeView0.Nodes.Add "Open", tvwChild, "test2"
TreeView0.Nodes.Add "Closed", tvwChild, "test3"
TreeView0.Nodes.Add "Closed", tvwChild, "test4"
TreeView0.Nodes.Add "Closed", tvwChild, "test5"


TreeView0.Nodes(1).Image = "Closed"
TreeView0.Nodes(1).Text = "Closed [+]"

TreeView0.Nodes(2).Image = "Closed"
TreeView0.Nodes(2).Text = "Closed [+]"

TreeView0.Nodes(3).Image = "Document"
TreeView0.Nodes(3).Text = "Document"

TreeView0.Nodes(4).Image = "test"
TreeView0.Nodes(4).Text = "test"

TreeView0.Nodes(5).Image = "test2"
TreeView0.Nodes(5).Text = "test2"

TreeView0.Nodes(6).Image = "test3"
TreeView0.Nodes(6).Text = "test3"

TreeView0.Nodes(7).Image = "test4"
TreeView0.Nodes(7).Text = "test4"

TreeView0.Nodes(8).Image = "test5"
TreeView0.Nodes(8).Text = "test5"

'THIS LINE FAILS (Property Invalid)
TreeViewTest = TreeView0

End Sub

Private Sub TreeView0_DblClick() 'OK


If TreeView0.Nodes(1).Expanded = True Then
    TreeView0.Nodes(1).Image = "Open"
    TreeView0.Nodes(1).Text = "Open [-]"
ElseIf TreeView0.Nodes(1).Expanded = False Then
    TreeView0.Nodes(1).Image = "Closed"
    TreeView0.Nodes(1).Text = "Closed [+]"
End If


If TreeView0.Nodes(2).Expanded = True Then
    TreeView0.Nodes(2).Image = "Open"
    TreeView0.Nodes(2).Text = "Open [-]"
ElseIf TreeView0.Nodes(2).Expanded = False Then
    TreeView0.Nodes(2).Image = "Closed"
    TreeView0.Nodes(2).Text = "Closed [+]"
End If



End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-01 23:11:08

不能从变量中设置窗体控件。您可以做的是声明一个变量,然后将form控件设置为该变量并修改该变量的属性。使用MSForms (想必是访问表单?)还可以声明表单变量,然后在运行时将它们添加到窗体中。

所以我发现你的代码有两个问题。第一个原因是,由于TreeControl是一个ActiveX变量,所以需要将TreeView0变量声明为CustomControl而不是TreeView。然后,需要将窗体控件设置为变量。ie Set TreeView0 = Me.TreeViewTest

所以守则是:

代码语言:javascript
复制
Private Sub Form_Load()
    Dim iml As ImageList
    Dim TreeView0 As CustomControl
    'Set TreeView0 = New TreeView -> not needed as you set the control to the variable
    Set iml = New ImageList

    Set TreeView0 = Me.TreeViewTest

    'Do the rest of you initialisation here.
End Sub

如果您想重用这段代码(否则为什么要从变量中设置它?)然后您只需将其更改为:

代码语言:javascript
复制
Private Sub Form_Load()
    InitMyTree(Me.TreeViewTest)
    InitMyTree(Me.TreeViewTest1)
End Sub

然后使用以下函数(注意,不需要在函数中声明变量)。

代码语言:javascript
复制
Private Sub InitMyTree(TreeView0 as CustomControl)
    Dim iml As ImageList:    Set iml = New ImageList

    iml.ListImages.Add , "Open", LoadPicture("Folder\Open.bmp")
    iml.ListImages.Add , "Closed", LoadPicture("Folder\Close.bmp")

    'Finish initialisation here.
End Sub
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22943185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档