新手问题:一个关于TreeView控件的问题

phlac 2004-11-09 11:10:39
在TreeView控件中,如何通过双击对一特定窗体的调用,该窗体的Name与TreeView 放在同一个表(main)中。该表资料如下,比如双击 text为“物料基本资料”节点,则frmform1 显示,双击 text为“项目资料”节点,则frmform2 显示.
| key | parent | text | file |
| 2_ | 0_ | 02 项目管理 | |
| 1_ | 0_ | 01 库存管理 | |
| 1a_ | 1_ | 基础数据 | |
| 1a_01_ | 1a_ | 物料基本资料 | frmform1 |
| 2a_ | 2_ | 基础数据 | |
| 2a_01_ | 2a_ | 项目资料 | frmform2 |

...全文
106 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
phlac 2004-11-10
  • 打赏
  • 举报
回复
楼上的,这个例子好象不行,我需要的是对窗体的调用。而窗体名称是存放在数据库中啊!!
lndlwwh830 2004-11-09
  • 打赏
  • 举报
回复
一个例子!!
Dim buttonx As Integer

Private Sub addnew_Click()

connect
If re.State = 1 Then
re.Close
End If
re.Open " tab1 ", con, adOpenDynamic, adLockBatchOptimistic

TreeView1.Nodes.Add TreeView1.SelectedItem.key, tvwChild, Str(re.RecordCount) & "xx", "新建项目", 1

TreeView1.SelectedItem.Expanded = True

re.addnew
re.Fields(0).Value = "新建"
re.Fields(1).Value = Str(re.RecordCount) & "xx"
re.UpdateBatch
End Sub

Private Sub Command1_Click()
Set TreeView1.ImageList = ImageList1
TreeView1.Nodes.Add , , , "pc", 1
TreeView1.Nodes.Add , , , "xp", 2
End Sub

Private Sub Command2_Click()
Dim fso As New FileSystemObject
Dim fd As Folder, sfd As Folder

Set TreeView1.ImageList = ImageList1
Set fd = fso.GetFolder("c:")
For Each sfd In fd.SubFolders
TreeView1.Nodes.Add , , , sfd.Name, 1
Next


End Sub

Private Sub Command3_Click()
TreeView1.ImageList = ImageList1
TreeView1.Nodes.Add , , "key1", "书", 1
TreeView1.Nodes.Add , , "key4", "书3", 1
TreeView1.Nodes("key1").ExpandedImage = 3

End Sub

Private Sub Command4_Click()
'TreeView1.Nodes("key11").Selected = True
End Sub

Private Sub Command5_Click()
TreeView1.ImageList = ImageList1
TreeView1.Nodes.Add , , "no", "种类", 2
TreeView1.Nodes.Add "no", tvwChild, "no1", "商品", 1
TreeView1.Nodes.Add "no", tvwChild, "no2", "药品", 1
TreeView1.Nodes.Add "no", tvwChild, "no3", "食品", 1
End Sub

Private Sub Form_Load()
' TreeView1.Checkboxes = True
' TreeView1.Nodes.Add , "R", "root", "root"
' TreeView1.Nodes.Add "root", tvwChild, "key1", "aa"
' TreeView1.Nodes.Add "key1", tvwChild, "key11", "ccc"
'
' TreeView1.Nodes.Add "root", tvwChild, "key2", "bb"
' TreeView1.Nodes.Add "key2", tvwChild, "key21", "ddd"
' TreeView1.Nodes.Add "key2", tvwChild, "key211", "eee"
' For I = 1 To TreeView1.Nodes.Count
' TreeView1.Nodes(I).Expanded = True
' Next
End Sub


Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
If Node.key = "key1" Then

ElseIf Node.key = "key4" Then

ElseIf Node.key = "no1" Then
ElseIf Node.key = "no2" Then
ElseIf Node.key = "" Then



End If


End Sub

Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim nde As Node


Set nde = TreeView1.HitTest(x, y)

If nde Is Nothing Then
Text1.Text = ""
Else
Text1.Text = nde.Text
End If
Set nde = Nothing
buttonx = Button

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Dim key As String
On Error Resume Next

If buttonx = 2 Then
PopupMenu pop
Else
If Node.key = "key1" Then
If TreeView1.Nodes("key11").Tag <> "key11" Then

TreeView1.Nodes.Add "key1", tvwChild, "key11", "历史书1", 2
TreeView1.Nodes.Add "key1", tvwChild, "key12", "历史书2", 2
End If
TreeView1.Nodes("key1").Expanded = True
ElseIf Node.key = "key4" Then
TreeView1.Nodes.Add "key4", tvwChild, "key41", "历史书1", 2
TreeView1.Nodes.Add "key4", tvwChild, "key42", "历史书2", 2
Else
key = Node.key
Call addnode(key)
End If
End If




End Sub
Private Sub CheckChild(ByVal Node As MSComctlLib.Node, ByVal bCheck As Boolean, Optional ByVal bNext As Boolean = True, Optional ByVal bChild As Boolean = True)
If Not Node Is Nothing Then
Node.Checked = bCheck
If Node.Children And bChild Then
Call CheckChild(Node.Child, bCheck, True, True) '对子节点
End If
If bNext Then
Call CheckChild(Node.Next, bCheck, True, bChild) '对同一层节点
End If
End If
End Sub

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Call CheckChild(Node, Node.Checked, False, True) '处理子节点
End Sub
Sub addnode(key As String)
Dim nodestr As String
nodestr = TreeView1.Nodes(key).Text
connect
If re.State = 1 Then
re.Close
End If
re.Open "select * from tab1 where 种类='" & nodestr & "'", con, adOpenDynamic, adLockBatchOptimistic
If re.RecordCount > 1 Then
For i = 1 To re.RecordCount
TreeView1.Nodes.Add key, tvwChild, re.Fields(1), re.Fields(1)

re.MoveNext
Next
TreeView1.Nodes(key).Expanded = True
End If


End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧