




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LabVIEW Tree Control 使用说明一控件简介1二控件的常用属性、方法、事件2三常见操作的实现方法23.1 增加节点23.2 删除节点23.3 节点的移动33.4 获取当前用户选中的节点33.5 节点的查找33.6 节点的遍历43.7 Tree Control界面显示内容操作43.7.1 读取left Cell String 或Child Text的值43.7.2 修给某Item的值43.8 控件内容运行时修改4一控件简介 LabVIEW的Tree Control 控件以树型结构显示信息,每个节点带细节描述列。可以显示该节点的其它信息。如下图所示图 1 . 控件外观二控件的常用属性、方法、事件 控件的常用属性、方法、事件可以很方便的从LabVIEW的帮助或者编写简单的Demo获取,这里就不再赘述。 只是有一点需要注意,控件属性结构上显示的字符是控件的Left Cell String,可以重复,再控件内部管理这些节点是用Tag属性,该属性为字符串类型,不可重复,如果增加节点时不设置该属性,LabVIEW会默认将Left Cell String作为Tag,遇到重复的情况以”下划线加数字”区分。如“张三_1”。在控件的方法、事件中获取到节点值都是控件的Tag。三常见操作的实现方法 3.1 增加节点使用控件的 Add Item 方法,如图所示:如果只是增加一个节点作为树的最后一个节点,可以使用Add Item To End 方法。3.2 删除节点 使用控件的delete Item 方法 Delete children 代表删除父节点是否要删除子节点。如果不删除子节点,子节点将往上移动一层替代原父节点的位置。如果该节点没有子节点而要求删除,将会产生错误。所以删除时最好先检测是否有子节点3.3 节点的移动LabVIEW 的树型结构控件节点的界面拖拽代码不需要设计者编写,只需要设置Allow Draging ,Allow Draging of Parant Items ,Allow Draging Between Items 属性即可。 如果在运行时需要由程序移动节点,使用方法Move Item 即可 程序中要展开,收合节点使用Open/Close方法3.4 获取当前用户选中的节点 要获知当前用户选中的节点需要使用该控件的事件(ValueChange)其中NewVal是当前选中节点的Tag,OldVal 是前一次选中节点的Tag3.5 节点的查找 LabVIEW Tree Control 提供节点的查找方法有 Get Child获取父节点的第一个孩子节点 Get Next获取节点同一层次的下一个节点 Get Parent获取节点的父节点 Get Path获取当前节点从上之下的父子节点关系,从顶节点开始,到目标节点的所有父系节点(包括当前节点),结果放于字符串数组中3.6 节点的遍历 看了节点的查找方法后,我们不禁要问,难道我要全面遍历节点需要通过这些方法来编写复杂的遍历代码吗?答案是否定的。Tree Control有个属性是Display Items ,按照先序遍历顺序将所有节点的Tag存储在字符数组中,相当于delphi Tree Control 的Items。可以通过对数组的遍历实现对树节点的全面访问。3.7 Tree Control界面显示内容操作 前面提到了该控件内部管理树是通过Tag管理,界面显示与Tag无关,Tree Control管理界面显示的内容类似Grid,每一个格子为一个单元,可以设置其属性,也可读出值。3.7.1 读取left Cell String 或Child Text的值 使用两个属性节点,首先将要读取的格子置为Active(使用Active Item Properties和Active Cell Properties),再读取Active Cell String 即可。附注:恶劣的设计,大大方方地给它一个数组产生的Child Text 这么卑劣地还给我。3.7.2 修给某Item的值 如果修改Item的Tag,可以使用方法节点 Set Tag,如果修改Left Cell String或者Child Text方法有二:方法一:将该Item删除再添加。方法二:仿照3.7.1 3.8 控件内容运行时修改我们不难发现,该控件可以在设计时修改值,再进行增加节点,填入节点内容等等操作,但是当程序运行时却不能由用户修改Cell里的值。也就是不具备输入功能。网站上LabVIEW官方的说法是我们目前使用的包是Base Package 。而要进行这项操作需要Full Package ,或Professional package 支持。可以通过/advisors/ua?stayput=true 在线升级,目前该项功能我还在尝试。不过可能稍显麻烦,网站上升级问我要RMB ,如果项目中不需要用户在树型控件中输入就不升级了。引用 Tree控件的使用labview 2010-07-03 01:22:17 阅读90 评论0 字号:大中小订阅 引用statemice 的 Tree控件的使用本节将重点讨论LabVIEW中的Tree控件,也许是控件本身的使用比较“麻烦”,导致很多程序员不愿意使用该控件。其实在大多数的应用程序中均可以看到Tree的身影,如Windows操作系统中的“资源管理器”左侧的文件列表,通常Tree控件可以用来显示一些有组织的、分类明确的数据。1.1 编辑Tree控件的外观Tree控件位于LV的控件选板“List&Table”子选板中,如图 1所示。从背面板可以看出Tree实质上是一种字符串(String)类型,这难免会让人费解:如何将前面板大量的“条理性的数据”与String对应呢?图 1 Tree控件选择工具选板中的Edit Text工具,可以直接在Tree控件中输入数据。(1) 通过Tree控件的右键快捷菜单Visible Items菜单项,可以改变Tree控件的显示外观,如图 2所示。可以逐一勾选/不勾选该菜单项中的菜单,就明确了各个菜单项对应的含义。图 2 改变Tree控件的显示外观(2) 在Visible Items中有一个Symbols菜单项,从外观上看勾选或不勾选该选项没有什么区别。原来,LabVIEW允许对Tree中的每一行指定一个符号,显示在行首。要显示该符号首先需要勾选Visible ItemsSymbols选项,其次在某一行上右击弹出的快捷菜单上选择Item Symbol菜单项,并选择一个符号。如图 3所示。LabVIEW提供了42种符号可供选择,其中第1种为空(默认值,因此前面在勾选Visible ItemsSymbols后看不到变化)。可以通过该方式为每一行添加各种不同的符号。图 3 选择Symbol(3) 在Windows资源管理器中,我们可以看到Tree是能够显示层级关系的。这一点可以通过选择右键快捷菜单中的Indent Item和Outdent Item实现,在第图中的3行上右击选择Indent Item,则第3行变成了第2行的子行,如图 4所示。此时,LabVIEW会自动添加一个“+”或“”符号,如同Windows资源管理器中显示的一样。程序员可以通过选择快捷菜单中的Expand/Contract Symbol Type选项来改变该符号的显示样式。图 4 改变Tree控件的层次关系(4) 那么LabVIEW究竟如果把Tree控件上显示的诸多字符串表示在底层函数面板中呢?我们可以尝试使用一个String显示件验证Tree控件的输出,其前面板和背面板如图 5所示。运行该VI,并且选择Tree的不同行(随着选择的不同,被选中的行会以蓝色高亮显示,比如图中的第3行),观察String显示件中的值。可以得到Tree控件的输出好像是每一行的首列字符串,但是第4行的输出却是A_1,这是一个从来没有输入过的值。图 5 测试Tree控件的输出字符串选择Tree右键快捷菜单中的Edit Item菜单项,将弹出如图 6所示的对话框。对话框的左侧是Tree控件显示的内容,改变控件的选择,可以看出右侧的Tag会随之改变,并且第4行的Tag值正好是A_1。原来Tree控件为每一行自动分配了一个唯一的Tag值(该值可以在Edit Item对话框中修改,但是必须确保唯一性和非空性),其输出则是当前选中行的Tag值。我们可以尝试将第4行的Tag值强行修改为A,此时LabVIEW将会以红色背景显示Tag值,表示该Tag值重复,无法正常使用(也就是说Tree控件中每一行的Tag值必须是唯一并且非空的)。图 6 Edit Tree Items对话框1.2 Tree控件对应的事件在背面板上放置一个事件结构,并且选择Tree控件,可以看到其对应的所有事件,如图 7所示。本节只介绍一些特殊的Tree事件。图 7 Tree控件的事件? Edit Cell事件该事件与multicolum listbox中的Edit Cell事件一样,当用户编辑控件中的内容时被触发。分为Edit Cell消息型事件和Edit Cell?过滤型事件,后者可以根据程序员的设计取消掉该事件。如程序运行时只允许用户修改Tree控件第1列的值,而不允许修改其他列的值。可以使用Edit Cell?过滤型事件实现该功能,具体如图 8所示。要允许用户在程序运行时编辑Tree控件的值需要首先勾选Tree控件右键快捷菜单中的Editable Cells菜单项,然后运行该程序,在需要修改的单元格中单击并输入响应的字符。可以看出除了修改第1列的值以外,对其它列的修改都不会成功。也可以把本例延伸一下,比如只允许用户输入特定的字符串(大写字母,数字等),应该如何处理呢?图 8 Tree控件的Edit Cell?过滤型事件? Double Click事件从名称可以看出,该事件在用户双击Tree控件时被触发,如图 9所示。图中事件数据节点中的Tag表示用户双击了哪一行,但是是否有一种方式明确了用户到底双击了Tree控件中的哪一个区域呢,具体为哪一行哪一列呢?显然左侧的Coords表示双击的坐标值,我们可以通过Tree控件的“Point To Row Column”方法(CreateInvoke Node)将Coords坐标值转化为具体的行和列值。此外,如何表示用户双击了Tree控件的行头和列头呢?具体可以参考LabVIEW中关于“Point To Row Column”方法的帮助文档。图 9 Tree控件的Double Click过滤型事件? Item Close和Item Open事件这两个事件是对立的,分别具有一个消息型事件和一个过滤型事件。它们是在用户展开或收缩某一个父层次项时被触发的,如上述Tree控件中的第2行,当展开或收缩该行时会触发该事件(可以通过单击该行左侧的“+”和“”符号或者双击该行实现展开和收缩操作)。如果不希望用户收缩Tree控件的第2行,可以使用如图 10所示的代码。运行该VI,可以看出,无论用户如何单击Tree控件第2行左侧的“”符号,都不会收缩该行。图 10 Tree控件的Item Close过滤型事件1.3 Tree控件对应的属性Tree控件的属性众多,如图 11所示,主要是为了动态地改变Tree控件的属性(利用程序修改)。绝大部分的属性与multicolum listbox类似,本节只介绍几个典型的属性节点,重在说明Tree属性节点的使用方法。图 11 Tree控件的属性列表? 改变某些单元格的属性从Tree控件可以看出它是有许多行和列组成的,其中每一行唯一的Tag值可以表征某一行,而列使用Numeric型数值指定,从0开始依次表示为第1行、第2行。因此,如果需要改变某些单元格的属性,需要首先指定哪些行和列。如同multicolum listbox一样,LabVIEW中使用Active属性用以说明具体指向哪一个单元格。图 12就是首先指定了Tag为C的行,第1列的单元格,然后输出该单元格上显示的文字。图 12 Tree控件的Active属性【注意】(1) Cell Tag和Cell String是不同的,前者用来表示唯一的行,它的值必须唯一并且非空;而后者是单元格上显示的文字,可以与Tag相同,也可以不同。(2) 当设置Tag为TREE_ALL_ROWS时,表示此时选定所有的行,可以使用此属性批量改变单元格的属性,如背景色等。(3) 当设置Tag为TREE_COLUMN_HEADERS时,表示选定所有的列头。(4) 当设置ActiveColumn为-2时表示选定所有的列;设置为-1时表示选定所有的列头。例如,需要把Tree控件第1列的字体设置为粗体,则可以使用图 13所示的代码。图 13 设置Tree控件第1列的字体设置为粗体? Top Left Visible Cell属性该属性使用的比较少,因此单独介绍一下。它表示Tree控件左上角第1个单元格的位置,这个属性在设置Tree控件滚动条的自动滚动时会经常使用。例如,当动态添加Tree控件的内容时,需要使Tree的滚动条随着内容的增加而自动滚动,保证最后添加的内容保持可见,就可以使用该属性。可以尝试使用图 14所示的方法,并且在Tree控件中手动加入一些内容,任意拖动水平和垂直的滚动条,然后观察输出的值。图 14 Tree控件的Top Left Visible Cell属性? All Tags属性和Displayed Items属性这两个属性比较类似,都是输出Tree控件的Tag值。但是前者表示输出所有行的Tag值;后者表示输出可见行的Tag值,也就是说只输出展开行的Tag值。可以单击第2行左侧的“”符号,这样第3行就处于隐藏状态,分别获取这两个属性的值就很容易地知道二者的区别了。1.4 Tree控件对应的方法典型的Tree控件方法如图 15所示,共有六大类。前文叙述了Point to Row Column方法,而Double Click方法表示双击的哪一行(或者称之为结点/Node),因此本节重点介绍其它的四类方法。图 15 Tree控件的方法1.4.1 展开和收缩Tree的结点(1) Open/Close.Open/Close All:展开或收缩所有的结点(行)。(2) Open/Close.Item:展开或收缩某个结点(行)(3) Open/Close.Ensure Visible:允许某个子节点可见。与上面的两个方法不同,该方法的输入是一个子结点的Tag,而不是母结点的Tag。1.4.2 检索Tree的结点Navigate Tree中包含5个方法:Get Child、Get Next Item、Get Parent Item、Get Path和Get Previous Item。每个方法的功能如同它们的名字一样,使用也比较简单。Get Next Item和Get Previous Item是一对相对的方法,在使用过程中有所不同,它是指同一层次的后一个结点和前一个结点。例如在图 16中A结点的下一个结点是B,而前一个结点是空。B结点的下一个结点是E,而前一个结点是A,因为只有E结点与B是同一层次上的,C结点和D结点位于B的下一个层次上。同理,C结点的下一个结点是D,而上一个结点是空。图 16 Tree控件实例1.4.3 编辑Tree的结点图 17显示了编辑Tree各个结点的所有方法,其中前三种表示增加结点操作,方式都大同小异。图 17 Edit Tree Items方法假如需要给图 18左侧的Tree控件增加一个结点,使之变成右侧的Tree控件,则可以使用Edit Tree Items. Add Item方法。图 18 增加一个结点(Item项)图 19所示为增加结点的源代码,其中Parent Tag为B,表示B是待插入项的父结点,如果待插入结点没有父结点则设置为空就可以了。Child Position表示待插入项是第几个子项,很明显应该填入1。Left Cell String是待插入项第1列的字符串。Child Text是一个数组,表示待插入项第2列之后的所有字符串。Child Tag是待插入项的Tag值,不能设置为空或者与其它的Tag值相同。图 19 增加一个结点(Item项)源代码1.4.4 自定义Tree结点的符号在Custom Item Symbols方法中,可以动态设置或者自定义结点的符号。如前面所述,LabVIEW共提供了42种内置的符号,每一个符号从上之下从左至右有一个唯一的Index号(从0开始)。如果需要给图 18中新加入的F结点增加一个自定义的符号,可以使用图 20所示的代码。首先使用属性结点,将F结点的符号设置为1号符号(符号的Index可以在右键快捷菜单的Item Symbol菜单项中查询);然后使用Custom Item Symbol. Set Symbol方法,将1号符号修改为自定义的图片;这样就Tree控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西旅发文化旅游股份有限公司招聘13人模拟试卷及答案详解(名校卷)
- 2025年B107型中变催化剂项目建议书
- 2025河南开封国禹建设投资有限公司开招聘3人考前自测高频考点模拟试题附答案详解(模拟题)
- 设备齐全汽车租赁协议6篇
- 2025年轨道工程橡胶制品项目合作计划书
- 2025年衢州龙游县卫健系统“智汇衢州”市县联动引进高层次紧缺卫生人才36人模拟试卷及参考答案详解1套
- 2025江苏盐城市第一人民医院招聘编外专业技术人员42人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025安徽安庆医药高等专科学校高层次人才招聘5人考前自测高频考点模拟试题及一套参考答案详解
- 屈辱岁月课件
- 2025福建武夷山市供销总公司招聘3人模拟试卷带答案详解
- 24.1.1《圆》数学人教版九年级上册教学课件
- 乳品领域:认养一头牛企业组织架构及部门职责
- 宠物乐园方案
- 自备车补贴申请表
- 注塑成型技术培训之工艺理解课件
- 信息论与编码(第4版)完整全套课件
- 广西佑太药业有限责任公司医药中间体项目环评报告书
- 汽修厂安全风险分级管控清单
- 海绵城市公园改造施工组织设计
- 上体自编教材-体育运动概论-模拟
- 05625《心理治疗》案例分析
评论
0/150
提交评论