问一个问题。高分!
小弟创建一个窗口名为form1.
在窗口左边添加一个treeview控件。
然后添加一些节点。
例如:
AAAAA
aaaaa1
aaaaa2
aaaaa3
BBBBB
CCCCC
DDDDD
EEEEE
我想实现一个功能,点击aaaaa1,可以在form1窗口上 treeview的右边一个空白区域 显示一个对话框A
点击aaaaa2,在form1窗口上,treeview右边的那快空白区域,显示对话框B。以此类推。
请问如何实现该功能呢?
类似于vc++中的setparent的功能一样。就是一个对话框和treeview的子节点绑定,点哪个,显示哪个。
大牛们重点说如何显示哈~多谢了。绑定我自己看看能看个差不多。可是如何显示呢?需要建立N个对话框?点击aaaaa1的时候,调用 对话框A。show?
[解决办法]
1,主窗口中添加一个TreeView控件
2,主窗口添加若干个Frame控件,命名相同,比如都叫Frame1,设置不同的Index值(即创建Frame控件数组),Visible都设置为False,位置都设置在TreeView右边,大小相同(调整到你希望的尺寸和位置)
3,在每个Frame控件上放上你需要的内容控件(你需要的不同的窗口内容)
4,TreeView添加节点,对应的节点给个关键字,比如,叫K1,K2.......Kn(TreeView的节点关键字只能是文本),分别和Frame1控件数组的Index对应
5,在窗口模块中,定义一个CurIdx变量
6,在TreeView_NodeClick事件中,
检查节点的Key值,然后,提取相关的数字(Mid(Node.Key,2))得出节点序号TheIndex
Frame(CurIdx).visible=false'将当前显示的窗口设置为不可见
Frame(TheIndex).Visible=True'将个当前节点对应的窗口设置为可见
CurIdx=TheIndex'记录当前显示的节点序号
[解决办法]
自己用form做对话框,大体程序如下:
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Form_Load() Dim nodX As Node TreeView1.Move 0, 0, 6500, 5000 Set nodX = TreeView1.Nodes.Add(, , "R", "AAAAA") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "aaaaa1") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "aaaaa2") Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "aaaaa3") nodX.EnsureVisible Set nodX = TreeView1.Nodes.Add(, , "S0", "BBBBB") Set nodX = TreeView1.Nodes.Add(, , "S1", "CCCCC") Set nodX = TreeView1.Nodes.Add(, , "S2", "DDDDD") Set nodX = TreeView1.Nodes.Add(, , "S3", "EEEEE") TreeView1.HideSelection = True TreeView1.Indentation = 19 * Screen.TwipsPerPixelX TreeView1.LabelEdit = tvwManual TreeView1.LineStyle = tvwRootLinesEnd SubPrivate Sub Form_Unload(Cancel As Integer) End End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim fm As Form Set fm = Form2 fm.Caption = Node '自己想要处理的事情' Select Case Node' Case "aaaaa1"'' Case "aaaaa2"'' Case "aaaaa3"' End Select fm.Move TreeView1.Left + 3000, TreeView1.Top + 500, 3000, 3000 fm.Show SetParent fm.hwnd, Me.hwndEnd Sub
[解决办法]
可以使用Messagebox来显示对话框,然后使用Findwindow来查找这个对话框的句柄,并使用SetWindowPos或MoveWindow来设置对话框的位置。
至于该对话框属于那个控件(父对象),可以由MessageBox的第一个参数来指定。