先绘制一个tree,右边建议使用sstab先绘制你的tree在tree的nodeclick事件中使sstab跳到不同的界面!!下面是一段绘制tree的代码 Option Explicit Dim Rs As ADODB.RecordsetDim rs1 As ADODB.RecordsetDim i As IntegerDim R As IntegerPrivate m_cn As cNeoCaptionDim RsTrv(5) As ADODB.RecordsetDim Nodx As Node'*****************用于刷新trv控件****************** ' 需要定义全局变量k和l * '**************************************************Public Sub FreTrv()Trv.Nodes.Clear ' 'K = 0 ''定义动态集'L = "0" ''定义开始的号码" ''先绘制第一个节点 Set Nodx = Trv.Nodes.Add(, , "L" & "0", "重庆市") Nodx.Image = 1 Call WriteNode("", 0, "L" & "0")End Sub '************************************************** ''****************用于绘制节点********************* ' 需要上级单位的编码 * '************************************************** Public Sub WriteNode(ByVal l As String, ByVal s As Integer, Ssdq As String) Dim k As Integer k = s + 1 Set RsTrv(k) = New ADODB.Recordset Sql = "select * from jgdj where jgbm like '" & l & "%' and djbm like '0%' and len(jgbm)=(" & Len(l) & "+2)" RsTrv(k).Open Sql, Cnns, adOpenForwardOnly, adLockReadOnly If RsTrv(k).EOF Then ''当没有数据存在的时候 RsTrv(k).Close Set RsTrv(k) = Nothing Exit Sub Else ''当有记录存在的时候 While Not RsTrv(k).EOF '''绘制节点 Set Nodx = Trv.Nodes.Add(Ssdq, tvwChild, "L" & RsTrv(k)!Jgbm, RsTrv(k)!jgmc) Nodx.Image = k ''进行递规 Call WriteNode(RsTrv(k)!Jgbm, k, "L" & RsTrv(k)!Jgbm)
'''绘制完毕 RsTrv(k).MoveNext Wend End If RsTrv(k).Close Set RsTrv(k) = Nothing
End Sub
这里是nodeclick的代码Private Sub Trv_NodeClick(ByVal Node As MSComctlLib.Node) select case node.key case 节点1 '跳到第一页 sstab1.index=0 sstab1_clikc 0 case 节点2 '跳到第二页 sstab1.index=1 sstab1_clikc 1 ..... ..... end select End Sub
左边用treeview,右边用无模Form. 添加一个ToolBar1和StatusBar1 Dim fSubForm as FormPrivate Sub Form_Load() Set fSubForm= New frm右边窗口 Load fSubForm fSubForm.Show vbModeless, Me End SubPrivate Sub Form_Unload(Cancel As Integer)
Dim i As Integer 'close all sub forms For i = Forms.Count - 1 To 1 Step -1 Unload Forms(i) NextEnd Sub 可以相应paint和resizePrivate Sub Form_Paint()On Error Resume Next ToolBar1.Width = Width TreeView1.Top = ToolBar1.Height TreeView1.Height = Me.ScaleHeight - ToolBar1.Height - StatusBar1.HeightfSubForm.Top = Me.Top + ToolBar1.Height * Height / ScaleHeight + 650 fSubForm.Left = Me.Left + TreeView1.Width * Width / ScaleWidth fSubForm.Height = TreeView1.Height * Height / ScaleHeight - 650 fSubForm.Width = Me.Width + Me.Left - fSubForm.Left End SubPrivate Sub Form_Resize() Refresh End Sub还有点问题,就是650啊,呵呵,那个是form的controlbox的高度,不知道如何能搞出来.
Option Explicit
Dim Rs As ADODB.RecordsetDim rs1 As ADODB.RecordsetDim i As IntegerDim R As IntegerPrivate m_cn As cNeoCaptionDim RsTrv(5) As ADODB.RecordsetDim Nodx As Node'*****************用于刷新trv控件******************
' 需要定义全局变量k和l *
'**************************************************Public Sub FreTrv()Trv.Nodes.Clear
'
'K = 0 ''定义动态集'L = "0" ''定义开始的号码"
''先绘制第一个节点
Set Nodx = Trv.Nodes.Add(, , "L" & "0", "重庆市")
Nodx.Image = 1
Call WriteNode("", 0, "L" & "0")End Sub
'**************************************************
''****************用于绘制节点*********************
' 需要上级单位的编码 *
'**************************************************
Public Sub WriteNode(ByVal l As String, ByVal s As Integer, Ssdq As String)
Dim k As Integer
k = s + 1
Set RsTrv(k) = New ADODB.Recordset
Sql = "select * from jgdj where jgbm like '" & l & "%' and djbm like '0%' and len(jgbm)=(" & Len(l) & "+2)"
RsTrv(k).Open Sql, Cnns, adOpenForwardOnly, adLockReadOnly
If RsTrv(k).EOF Then ''当没有数据存在的时候
RsTrv(k).Close
Set RsTrv(k) = Nothing
Exit Sub
Else ''当有记录存在的时候
While Not RsTrv(k).EOF
'''绘制节点
Set Nodx = Trv.Nodes.Add(Ssdq, tvwChild, "L" & RsTrv(k)!Jgbm, RsTrv(k)!jgmc)
Nodx.Image = k
''进行递规
Call WriteNode(RsTrv(k)!Jgbm, k, "L" & RsTrv(k)!Jgbm)
'''绘制完毕
RsTrv(k).MoveNext
Wend
End If
RsTrv(k).Close
Set RsTrv(k) = Nothing
End Sub
select case node.key
case 节点1
'跳到第一页
sstab1.index=0
sstab1_clikc 0
case 节点2
'跳到第二页
sstab1.index=1
sstab1_clikc 1
.....
.....
end select
End Sub
添加一个ToolBar1和StatusBar1
Dim fSubForm as FormPrivate Sub Form_Load()
Set fSubForm= New frm右边窗口
Load fSubForm
fSubForm.Show vbModeless, Me
End SubPrivate Sub Form_Unload(Cancel As Integer)
Dim i As Integer
'close all sub forms
For i = Forms.Count - 1 To 1 Step -1
Unload Forms(i)
NextEnd Sub
可以相应paint和resizePrivate Sub Form_Paint()On Error Resume Next
ToolBar1.Width = Width
TreeView1.Top = ToolBar1.Height
TreeView1.Height = Me.ScaleHeight - ToolBar1.Height - StatusBar1.HeightfSubForm.Top = Me.Top + ToolBar1.Height * Height / ScaleHeight + 650
fSubForm.Left = Me.Left + TreeView1.Width * Width / ScaleWidth
fSubForm.Height = TreeView1.Height * Height / ScaleHeight - 650
fSubForm.Width = Me.Width + Me.Left - fSubForm.Left
End SubPrivate Sub Form_Resize()
Refresh
End Sub还有点问题,就是650啊,呵呵,那个是form的controlbox的高度,不知道如何能搞出来.