Access交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • [经验技巧]Access中..
  • 用CELL组件显示Acce..
  • Access下如何使用通用..
  • TreeView控件使用教..
  • 新手来看:datagrid..
  • 在VB通过vsreport..

最新文章

  • 在Access中使用Fon..
  • 完美解决“无法装载这个对象..
  • 快速学习Treeview树..
  • 一个可免注册的Access..
  • Access如何添加引用及..
  • 锐浪报表(Grid++Re..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > ActiveX/第三方控件/插件
ActiveX/第三方控件/插件

快速学习Treeview树状控件的详细教程

三小时快速掌握TreeView树状控件的使用。能不能掌握控件的使用,是业余向准专业进步的关键。虽然我本人不太喜欢用控件,因为基于不同的操作环境成品后效果很难保证。但有些成熟控件,会使用还是能提高软件水平。比如TREEVIEW控件,TREEVIEW控件,也叫树控件,主要用于层级显示和控制,应用广泛。我一直很想学习这个控件的使用,但每次都没有学成,总感觉很难。前几天有空,狠下心来将论坛搜索一遍,发现也不是太难,在很短时间内只要方法得当,很快可以掌握,因为我是菜鸟,所以用菜鸟的方法和大家交流,可能大家学得更快一点,只要你用心,三个小时一定可以掌握。请大家一定要自己动手做,只有做才能理解,光看帮助和说明是没有用的。

热身:
理解层级概念,层级理论上可以有无限级,一般用到四,五级也够用了。最上级的只能有一个,我们把它叫做“爷”,接下来是“父”,再是“子”,再是“孙”,接下来是“曾孙”......,汇总如下:“爷,父,子,孙,曾孙”,这里是5级关系,除了“爷”只能有一个外,其余可以有无限个。记住这些,下面要用。


第一小时:学习直接用代码将数据填充到树控件中。
为什么要先学习直接用代码将数据填充到树控件中?因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。
目的:我们要在树控件中建立如下的一个3层级关系

水果
|
|__苹果
| |__红富士
| |__国光
|
|__葡萄
|__红提子
|__青提子

解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。
在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。概括如下:
爷(只能有一个):水果
父(这里有2个):父1:苹果;父2:葡萄
子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子)


1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist
如何找到这两个控件?
Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version 6.0"
Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version 6.0"
Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢?原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。

2、设置这两个控件的属性
首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。一种是设置这个控件本身的属性。要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。跟我们平时设置文本框什么的一样。要设置这个控件本身的属性,只要双击这个控件就可以了。
1)设置Treeview控件在ACCESS中的名称属性,将名称设置为“Treeview"
2)设置Imagelist控件在ACCESS中的名称属性,将名称设置为“Image"
2)设置Imagelist控件本身的属性,双击控件后,在弹出来的设置框中选“Images",单击“Insert Picture"按钮,在你电脑中选择你需要的图标。在“Key:”栏中填入“K1”。其他默认设置不用改。
3)设置Treeview控件本身的属性,双击控件后,在弹出来的设置框中选“General”,在这个选项面版中有很多项设置,大多数是设置树控件的显示格式,你自己慢慢研究。这里我们将第一项“Style"选7,在第五项“Imagelist"选项中将我们放置的Imagelist控件“Image"选上。这项设置就将图标和树控件联系了起来。

3、写代码将数据填充到树控件中
代码写在哪里?我们希望窗体一打开,数据就自动填充在树控件中,所以这个代码就写在窗体的加载事件中,代码及解释如下:

  • VBScript code复制代码

  • Private Sub Form_Load()'* -----------------------------------------------------------------
    '*用代码将数据填充到树控件中
    '* -----------------------------------------------------------------
    Dim Nodeindex As Node'*------------------------------------------------------------------
    '*解释:定义Node
    '*Node是树控件的对象
    '*每个Node都有三个东西,图标,文本,索引值
    '*图标和文本都是实际显示出来的,索引值是隐含的
    '*------------------------------------------------------------------
    '设置最顶级的“爷”:
    '* ---------------------------
    Set Nodeindex = TreeView.Nodes.Add(, , "爷", "水果", "K1")
    Nodeindex.Sorted = True
    '*------------------------------------------------------------------
    '*树控件填充数据的方法是Nodes.Add
    '*括号内是Add方法的参数
    '*在这里“爷”是索引值,“水果”是将显示的文本,“K1”是图标的索引值
    '*Sorted是指Node的排序,True就是指采用排序,默认是按拼音
    '*第一,二个参数是空的
    '*具体的参数设置以后你可以慢慢详细研究
    '*------------------------------------------------------------------
    
    '设置第二级“父”
    '* ---------------------------
    Set Nodeindex = TreeView.Nodes.Add("爷", tvwChild, "父1", "苹果", "K1")
    Nodeindex.Sorted = True
    
    Set Nodeindex = TreeView.Nodes.Add("爷", tvwChild, "父2", "葡萄", "K1")
    Nodeindex.Sorted = True
    '*------------------------------------------------------------------
    '*第一个参数“爷”是指这一层对应上层“爷”的
    '*tvwChild参数是规定格式,指相对来说,这一层是爷的子层
    '*“父1”是索引值,因为“父”有2个,而索引值是唯一的,所以要编号,用“父1”“父2”分开
    '*“苹果”“葡萄”是要显示的文本,K1是显示图标的索引值
    '*现在知道为什么在“爷”层设置时,第一,第二个参数是空的,因为这是最顶层
    '*------------------------------------------------------------------
    
    '设置第三级“子”
    '* ---------------------------
    Set Nodeindex = TreeView.Nodes.Add("父1", tvwChild, "子1", "红富士", "K1")
    Nodeindex.Sorted = True
    
    Set Nodeindex = TreeView.Nodes.Add("父1", tvwChild, "子2", "国光", "K1")
    Nodeindex.Sorted = True
    
    Set Nodeindex = TreeView.Nodes.Add("父2", tvwChild, "子3", "红提子", "K1")
    Nodeindex.Sorted = True
    
    Set Nodeindex = TreeView.Nodes.Add("父2", tvwChild, "子4", "青提子", "K1")
    Nodeindex.Sorted = True
    '*------------------------------------------------------------------
    '*第一个参数“父1,2”是指这一层对应上层“父”的,但要注意对应的是“父1”还是“父2”
    '*tvwChild参数是规定格式,指相对来说,这一层是父的子层
    '*“子1”是索引值,因为“子”有4个,而索引值是唯一的,所以要编号,用“1,2,3,4”分开
    '*“红富士”等是要显示的文本,K1是显示图标的索引值
    '*------------------------------------------------------------------End Sub

就这么多代码,总共十几行,就可以在树控件中显示数据了,很简单吧。第一小时结束。

第二小时:学习怎样将树控件和数据库中的数据绑起来
在第一小时里,我们学习了怎样直接用代码填充树控件,但在实际使用中,这种方法的应用性不大,只有将树控件与数据库中的数据结合起来,才能有真正的应用。其实绑定数据库的方法和直接用代码填充是大同小异的,我们要做的只是将Add的参数里,原来我们手工输入的变换一下,让程序知道去数据库中找数据。


目的:将数据库中的数据与树控件绑定
背景:我们想在树控件中显示销售客户的层级列表,这个销售客户的分层是这样的,先按“大区”,再按“省份”,最后到“客户”我们在数据库中建立了三个表,字段如下:
大区表:大区ID,大区名称
省份表:省份ID,省份名称,所属大区
客户表:客户ID,客户名称,所属省份
这三个表互相建立了关系


1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist
2、设置这两个控件的属性在这里和第一小时唯一的区别是我们在Imagelist控件的设置时,导入了两个图标,一个KEY为K1,一个为K2,原来树控件的Node图标是可以变化的,我们准备某个项没有选中时的图标是一个没有打开的文件夹,选中时是一个打开的文件夹,以区别。
3、编写代码,如下:

  • VBScript code复制代码

  • Private Sub Form_Load()'* -----------------------------------------------------------------
    '* 用数据库表(查询也一样)中数据填充树控件
    '* -----------------------------------------------------------------
    Dim Rec As New ADODB.RecordsetDim stRecQL As String
    Dim Item As Integer
    Dim i As Integer
    Dim nodindex As Node'* -----------------------------------------------------------------
    '* 定义各类
    '* -----------------------------------------------------------------
    
    '设置最顶级的"爷"
    '* ---------------------------
    Set nodindex = TreeView.Nodes.Add(, , "爷", "销售客户", "K1", "K2")
    nodindex.Sorted = True
    '* -----------------------------------------------------------------
    '*这里的设置跟第一小时里基本是一样的
    '*但最后多了一个"K2"的参数,"K1"代表的是未被选中时的图标,"K2"代表是被选中后的图标
    '*仔细观察一下,你会发现选中和没选中的图标是不一样的,一个是一个文件夹,一个是一个打开的文件夹
    '* -----------------------------------------------------------------
    
    '设置第二级"父"
    '* ---------------------------
    Rec.Open "大区表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1Set nodindex = TreeView.Nodes.Add("爷", tvwChild, "父" & Rec.Fields("大区ID"), Rec.Fields("大区名称"), "K1", "K2")
    nodindex.Sorted = True
    Rec.MoveNextNext
    Rec.Close
    '* -----------------------------------------------------------------
    '*第一行意思是打开一个表去寻找数据(查询也是可以的)
    '*关键在与Add参数的变化
    '*大家看第三个参数,在第一小时里,这里是"父1",这里用Rec.Fields("大区ID")来代替"1",意思是用表的编号来代替手工编号
    '*第四个参数也是一样,直接用表中的名称字段来取代原来我们手工的命名
    '* -----------------------------------------------------------------
    
    '设置第三级"子"
    '* ---------------------------
    Rec.Open "省份表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1Set nodindex = TreeView.Nodes.Add("父" & Rec.Fields("所属大区"), tvwChild, "子" & Rec.Fields("省份ID"), Rec.Fields("省份名称"), "K1", "K2")
    nodindex.Sorted = True
    Rec.MoveNextNext
    Rec.Close
    '* -----------------------------------------------------------------
    '*不用再解释了吧
    '*要注意的是,定义第一个参数的时候,不是用"父" & Rec.Fields("大区ID"),而是用"父" & Rec.Fields("所属大区")
    '*这个意思是:用省份表中关联大区表的字段,而不是直接用大区表的ID
    '* -----------------------------------------------------------------
    
    '设置第四级"孙"
    '* ---------------------------
    
    Rec.Open "客户表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirectFor i = 0 To Rec.RecordCount - 1Set nodindex = TreeView.Nodes.Add("子" & Rec.Fields("所属省份"), tvwChild, "孙" & Rec.Fields("客户ID"), Rec.Fields("客户名称"), "K1", "K2")
    nodindex.Sorted = True
    Rec.MoveNextNext
    Rec.Close
    
    '* -----------------------------------------------------------------
    '*到此你应该完全明白了
    '* -----------------------------------------------------------------End Sub

第二小时结束


第三小时:将树控件与窗体结合
我们做树控件,当然不可能单单为了显示层级数据,我们希望跟窗体结合,当我们单击树控件中的某个客户时,窗体上能相应的转到这个客户的资料。


目的:将树控件与窗体结合
1、我们还是沿用第二个小时里的例子,但在建立窗体时,将窗体的数据来源设为“客户表”,并在窗体中放置好客户表的字段。
2、写入如下代码:

  • VBScript code复制代码

  • Private Sub Treeview_NodeClick(ByVal Node As Object)'* -----------------------------------------------------------------
    '*树控件的鼠标点击事件为NodeClick
    '* -----------------------------------------------------------------
    Dim str As String
    '* -----------------------------------------------------------------
    '*定义一个筛选
    '* -----------------------------------------------------------------
    If Node.Text = "销售客户" Or Node.Key Like "父*" Or Node.Key Like "子*" Then
    str = ""
    '* -----------------------------------------------------------------
    '*在第一小时里,我们说了Node有三个东西,图标,文本,索引值
    '*文本就是text,索引值就是Key
    '这里将就是说当我们点击"爷","父"或"子"层的时候,不筛选窗体
    '*这个条件也可写成:If Node.key = "爷" Or Node.Key Like "父*" Or Node.Key Like "子*" Then
    '* -----------------------------------------------------------------
    Else
    str = "[客户名称]='" & Node.Text & "'"
    End If
    Me.Form.FilterOn = True
    Me.Form.Filter = str'*按指定的条件进行窗体筛选End Sub

明白了吧,所谓结合窗体,实际不过是进行窗体筛选而已。第三小时结束(5分钟也够了,哈哈)

摘自网络 


发布人:zstmtony  
分享到:
点击次数:  更新时间:2017-05-24 23:01:51  【打印此页】  【关闭】
上一条:懒人有懒计——浅谈自动报表  下一条:Access 中IIF Switch Choose 3个函数的区别和使用方法



相关文章

  • • 在Access中使用Font Awesome字符图标
  • • 完美解决“无法装载这个对象”的困扰
  • • 一个可免注册的Access增强控件库
  • • Access如何添加引用及调整引用的顺序
  • • 锐浪报表(Grid++Report)的一些开发技巧
  • • Grid++Report 锐浪报表开发常见问题解答集锦
  • • RichTextbox控件RTF(富文本格式)的使用及常用语法

热门文章

  • [2005-02-04] 注册ActiveX控件的几种方法access数据库
  • [2017-12-16] 在Access中使用Font Awesome字符图标access数据库
  • [2013-07-15] [技巧]如何导出Imagelist的图标或图片到文件access数据库
  • [2013-10-01] The Kill-Bit FAQ: Part 1 of 3access数据库
  • [2004-05-13] RichTextBox无法在预览中显示内容access数据库
  • [2009-04-20] TreeView控件使用教程4access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

Access交流网 版权所有 1999-2018 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2023  www.metinfo.cn