VisualFreeBASIC基础——树视图控件的使用

一、属性

1、Name(名称)

    和窗口一样,Name属性是树视图类的实例化,我们可以用【名称.属性/方法】来使用树视图控件。

2、LinesRoot(根连接线)

    该属性可以设置根节点是否有一个连接线。

3、Check(复选框)

    该属性可以设置树视图控件节点的复选框。

4、Enabled(可用)、Visible(显示)

    使能和显示树视图控件。

5、Checked(复选框选中)

    如果树视图的Check属性设置为True,则选中节点时Checked属性为True,未选中则为False。Checked的参数为节点句柄(hTreeItem类型)

6、ImageList(图像列表)

    如果树视图需要使用图片时,需要通过图像列表控件来载入图片,该属性用于设置图像列表的句柄。
7、ItemData(节点数据)

    节点的附加数据,参数为节点句柄(hTreeItem类型)。

8、Selection(选中节点)

    返回或设置选中的节点,注意返回或设置的都是hTreeItem类型数据。
9、Text(节点文本)

    返回或设置节点的文本,参数为节点句柄(hTreeItem类型)。

二、方法

1、AddItem(添加子项)

该方法的函数原型如下:

Function AddItem(hParent As hTreeItem, TheText As CWSTR, clParam As Long = 0, iImage As Long = 0, iSelectedImage As Long = 0) As hTreeItem '新增项目:父项(TVI_ROOT 根节点),文本,附加值,正常图像列索引,选中时图像列索引,返回创建的项目的句柄

    这里要说明的是如果是添加根节点,则hParent为TVI_ROOT,如果是子节点,则hParent为父节点的句柄。
2、InsertItem(插入子项)

Function InsertItem(hParent As hTreeItem, After As hTreeItem, TheText As CWSTR, clParam As Long = 0, iImage As Long = 0, iSelectedImage As Long = 0) As hTreeItem '插入项目:父项(TVI_ROOT 根节点),项句柄或:{2.TVI_FIRST 开头.TVI_LAST 末尾.TVI_ROOT 根.TVI_SORT} 按照字母顺序, 文本,附加值,正常图像列索引,选中时图像列索引,返回创建的项目的句柄

    InsertItem的hParent参数与AddItem一样,这里说明一下After,是插入在哪一个节点的后面,也可以是插入在开头(TVI_FIRST) 、结尾(TVI_LAST) 
3、DeleteItem(删除子项)

    删除树视图的一个节点,函数原型为:

Function DeleteItem(hItem As hTreeItem) As Boolean '从树视图中删除项节点。如果成功返回 TRUE 否则为 FALSE

4、DeleteAllItems(删除全部)

    删除树视图的全部节点。函数原型为:

Function DeleteAllItems() As Boolean '从树视图中删除所有项目。如果成功返回 TRUE 否则为 FALSE

5、Expand(展开节点)

    展开或折叠子节点,函数原型为:

Function Expand(hItem As hTreeItem, nExpand As Boolean) As Boolean '展开或折叠要显示/隐藏子节点的节点。如果成功返回 TRUE 否则为 FALSE {2.True.False}

6、ExpandAllItems(展开全部)

    展开全部节点。函数原型为:

Sub ExpandAllItems() '展开所有项目列表。

7、CollapseAllItems(折叠全部)

    折叠全部节点。函数原型为:

Sub CollapseAllItems() '折叠所有项目列表。

8、GetRoot(获取跟节点)

    获取第一个根节点。函数原型为:

Function GetRoot() As hTreeItem '返回最顶层的第一个项目,成功则返回该项目的句柄,否则返回NULL。

9、GetParent(获取父节点)

    获取节点的父节点。函数原型为:

Function GetParent(hItem As hTreeItem) As hTreeItem '检索指定项目的父项目, 如果成功,则返回该项目的句柄,否则返回NULL。

10、GetChild(获取子节点)

    获取节点的第一个子节点。函数原型为:

Function GetChild(hItem As hTreeItem) As hTreeItem '指定树视图项目的第一个子项目。 如果成功,则返回该项目的句柄,否则返回NULL。

11、GetCount(获取节点数)

    获取树视图的节点总数。函数原型为:

Function GetCount() As Long '检索树视图控件中全部项目总数。

12、GetChildCount(获取子节点数)

    获取节点的子节点数。函数原型为:

Function GetChildCount(hItem As hTreeItem) As Long '获取指定项目子级别数量

13、GetLevel(获取级别)

    获取节点的级别,根节点为0级。函数原型为:

Function GetLevel(hItem As hTreeItem) As Long '返回项目的级别。根项被假定为零级。

14、GetPrevSiblin(上一个节点)

    查找上一个同级别的节点。函数原型为:

Function GetPrevSiblin(hItem As hTreeItem) As hTreeItem '检索指定项目的上一个同级项目, 如果成功,则返回该项目的句柄,否则返回NULL。

15、GetNextSiblin(下一个节点)

    查找下一个同级别的节点。函数原型为:

Function GetNextSiblin(hItem As hTreeItem) As hTreeItem '检索指定项目的下一个同级项目。 如果成功,则返回该项目的句柄,否则返回NULL。

三、事件

1、TVN_SelChanged事件

Sub Form1_TreeView1_TVN_SelChangeD(hWndForm As hWnd, hWndControl As hWnd,pNMTV As NM_TREEVIEW)  '选择了列表

End Sub

    选择了新节点后产生该事件。

四、示例

    根据树视图的属性做一个示例。如图所示:

VisualFreeBASIC基础——树视图控件的使用_第1张图片

说明一:    

    修改背景色需要先修改数视图的类文件,增加BackColor属性(原有的公共的属性不能设置树视图的背景色),找到VFB文件夹下的Compile文件夹,打开找到inc文件夹,再打开找到WinClass文件夹,打开里面的ClsTreeView.inc文件,增加类的属性。在End Type前加入代码:

Declare Property BackColor() As COLORREF
Declare Property BackColor(nColor As COLORREF)
Declare Property ForeColor() As COLORREF
Declare Property ForeColor(nColor As COLORREF)

    然后在文本末尾(位置随你喜欢)加入以下代码:

Property Class_TreeView.BackColor() As COLORREF
    Return SendMessage(hWndControl,TVM_GETBKCOLOR,0,0)
End Property

Property Class_TreeView.BackColor(nColor As COLORREF)
    SendMessage(hWndControl,TVM_SETBKCOLOR,0,nColor)
End Property

Property Class_TreeView.ForeColor() As COLORREF
    Return SendMessage(hWndControl,TVM_GETTEXTCOLOR,0,0)
End Property

Property Class_TreeView.ForeColor(nColor As COLORREF)
    SendMessage(hWndControl,TVM_SETTEXTCOLOR,0,nColor)
End Property

说明二:

    需要添加ImageList(图像列表),用来显示节点的图标。在设计窗体中添加一个ImageList,然后在属性窗口的Image里点击下拉按钮,在弹出的图像列表编辑窗口里添加图片。图像列表编辑窗口如图:

VisualFreeBASIC基础——树视图控件的使用_第2张图片

    按新增按钮即可到图像库中导入图片。本例子添加3个图片:book.png,dir.png,file.png。添加后如图:

VisualFreeBASIC基础——树视图控件的使用_第3张图片

代码如下:

Sub Form1_WM_Create(hWndForm As hWnd,UserData As Integer)  '完成创建窗口及所有的控件后,此时窗口还未显示。注:自定义消息里 WM_Create 此时还未创建控件和初始赋值。
    Dim hRoot As HTREEITEM
    Dim hItem As HTREEITEM

    TreeView1.BackColor = &HC0FFFF                    '设置背景色
    TreeView1.ForeColor = &HFF0000                    '设置前景色
    TreeView1.ImageList = ImageList1.GethImageList    '设置图像列表
    '添加节点
    hRoot = TreeView1.AddItem(TVI_ROOT, "根节点", 0, 0, 0)
    hItem = TreeView1.AddItem(hRoot, "节点", 0, 1, 1)
    TreeView1.AddItem hItem,"子节点",0,2,2
End Sub

Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    Dim hItem As HTREEITEM    
    
    hItem = TreeView1.Selection                '获取当前选中节点
    TreeView1.AddItem hItem,"子节点",1,2,2     '添加子节点 
End Sub

Sub Form1_Command2_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.DeleteItem TreeView1.Selection 
End Sub

Sub Form1_Command3_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.DeleteAllItems
End Sub

Sub Form1_Command4_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.Text(TreeView1.Selection) = TreeView1.Text(TreeView1.Selection) & "*"  
End Sub

Sub Form1_Command5_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    Printa TreeView1.ItemData(TreeView1.Selection)                '显示上一次的
    Randomize
    TreeView1.ItemData(TreeView1.Selection) = int(Rnd * 1000)     '存储一个随机数
End Sub

Sub Form1_Command6_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.Expand TreeView1.Selection,True 
End Sub

Sub Form1_Command7_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.Expand TreeView1.Selection,False
End Sub

Sub Form1_Command8_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.ExpandAllItems
End Sub

Sub Form1_Command9_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.CollapseAllItems
End Sub

Sub Form1_Command10_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    printa TreeView1.Selection
End Sub

Sub Form1_Command11_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    Printa TreeView1.GetRoot   
End Sub

Sub Form1_Command12_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)  '单击
    TreeView1.BackColor = &HFFE0FF
End Sub

运行效果:

VisualFreeBASIC基础——树视图控件的使用_第4张图片

VisualFreeBASIC基础——树视图控件的使用_第5张图片

完整项目:

https://github.com/rainheart311/VisualFreeBASIC/tree/master/TreeView

 

 

 

你可能感兴趣的:(FreeBASIC实例工程,freebasic)