关于TreeView的问题

zhangt2001 2004-01-11 02:18:49
我想做一个类似于杀毒软件的界面,右面是一棵树,左面是窗口,是可以根据点击不同的树的节点改变的。
我尝试用MDI窗口,效果不好。左面子窗体上画了一个TreeView控件,右面的窗体上画我要的控件,然后点击TreeView的节点,关闭和加载右面的窗体。
但是这样的话,左右窗口是独立的,并且有标题栏,我想去掉标题栏,并且把左右和成一个整体,即拉大左边的窗体,右边的窗体就缩小,同时右面的窗体又能跟据左面对树的点击改变,请问高手,怎样做?
谢谢!
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chao778899 2004-01-11
  • 打赏
  • 举报
回复
有这么好的想法,自己应该能解决--;)
AresChen 2004-01-11
  • 打赏
  • 举报
回复
把右侧的功能做成独立的activex控件,然后点击treeview的时候动态加载这些控件。好处是,主程序很简单,只是功能列表的显示和功能的加载,而且每一项功能因为被封装到独立的activx控件中,所以升级等工作也比较好作。
northwolves 2004-01-11
  • 打赏
  • 举报
回复
看看下面代码行否?

Option Explicit

Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long

'加三个PICTUREBOX控件,picture1 中装载TREEVIEW,picSplit作为分隔条,picture2 作为显示窗口
Private Sub Form_Load()
Dim i As Long
Picture1.Left = 60
Picture1.Top = 60
TreeView1.Move Picture1.Left, Picture1.Top, Picture1.Width, Picture1.Height
TreeView1.LineStyle = tvwTreeLines
Picture2.Top = 60
Picsplit.Left = Picture1.Left + Picture1.Width + 30
Picsplit.Width = 60
Picsplit.BorderStyle = 0
Picture2.Left = Picsplit.Left + Picsplit.Width '+ 50
Picture1.Height = 5700
Picture2.Height = 5700
Picsplit.Top = 60
Picsplit.Height = 5700
Picsplit.MousePointer = vbSizeWE
TreeView1.Nodes.Add , , "all", "all"
TreeView1.Nodes(1).Expanded = True
For i = 0 To 100
TreeView1.Nodes.Add "all", 4, , i
Next
End Sub

Private Sub picSplit_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error Resume Next
If Button = vbLeftButton Then
SetCapture Picsplit.hwnd
Picsplit.Tag = x
Picsplit.BackColor = &HFF8080
End If
End Sub

Private Sub picSplit_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error Resume Next
If Button = vbLeftButton Then
If Picsplit.Left >= (100 - x) And Picsplit.Left <= (Me.ScaleWidth - 100 - x) Then Picsplit.Left = Picsplit.Left + x - CInt(Picsplit.Tag)
End If
End Sub

Private Sub picSplit_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error Resume Next
If Button = vbLeftButton Then
Picture1.Width = Picsplit.Left - 80
Picture2.Left = Picsplit.Left + 50
Picture2.Width = Width - Picsplit.Left - 250

Picsplit.BackColor = &H8000000F
ReleaseCapture
End If
End Sub


Private Sub Picture1_Resize()
TreeView1.Move Picture1.Left, Picture1.Top, Picture1.Width, Picture1.Height
End Sub



Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Picture2.Cls
Picture2.FontSize = 50
Picture2.Print Node.Text
End Sub
还想懒够 2004-01-11
  • 打赏
  • 举报
回复
用ACTIVEBAR控件即可解决

另外,可以采用这种方法来解决,点击一个节点,弹出一个无边框的窗口,将该窗口进行定位即可,然后再用代码控制新开的窗口。

7,763

社区成员

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

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