LabVIEW之树形控件

news2025/1/10 12:38:05

一、树形控件基本构成

树形控件这个名称非常形象,其如同树一样,是典型的分层结构。树形控件的属性和方法使用非常灵活,树形控件的内容既可以静态编辑,也可以通过编程来动态填充。静态编辑树形控件适用于内容不变的应用场景,而动态填充则比较复杂,适用于内容无法确定的场合。

在了解树形控件的静态编辑前需要先熟悉树形控件各部分名称及其含义。如下图1-1所示,树形控件有几个基本元素构成,包括扩展/折叠符号、项目符号、左单元格字符串、子项文本。

图1-1 树形控件的基本构成

扩展/折叠符号可以选择Windows、LabVIEW、Mac OS等显示方式;

项目符号可以选择内部项目符号表中提供的符号,也支持用户自定义符号;

左单元格字符串表示项目的具体含义,直接显示在树形控件中,LabVIEW内部区分具体项目,是通过项目标识符(Tag)实现的(项目标识符也是字符串,可以与左单元格字符串相同,也可以不同);

子项文本时字符串数组,可以多列显示,常用于说明项目的用途,也可不用。

二、树形控件静态编辑

对于树形控件这种典型的分层结构而言,位于顶端的项目通常称为顶端项目或者根项,其特点是没有父项。而其他中间项目既有父项,又有子项,它们相互之间有隶属关系。位于末端的项目可以仅设置为子项,表示该项目不能作为其他项目的父项。

对于内容始终不变的树形控件,可以在开发编辑环境中直接使用操作选板编辑,简单介绍一下属性空间的编辑方法。

第一步:按照层次结构设计树形控件的内容草图,包括所有的左单元格字符串及其标识(Tag),如下图1-2所示。

图1-2内容草图

第二步:按照草图设计树形控件。对于树形控件而言,显示在树形控件中的左单元格字符串是不重要的,重要的是区别各个项目的标识。必须保证这些标识(Tag)是唯一的。默认情况下,LabVIEW会根据左单元格自动生成同名的标识。左单元格字符串可以相同,对于同名单元格,生成的标签会自动添加序号,如下图1-3所示,可以通过快捷菜单打开“编辑项”对话框来设置标识名称。在“编辑项”对话框中,按照顺序数据所有左单元格字符串,遵循从左到右、从上到下的原则。

图1-3 查看标识符

第三步:根据不同层次,通过树形控件的快捷菜单中的“缩进项”进行缩进。多层项目需要多层缩进。项目编辑完成后,选择合适的缩进符号。如果需要不同的项目符号,可在树形控件快捷菜单“显示项”中打卡“符号”对话框,然后选择合适的内置项目符号。效果如下图1-4所示。

图1-4 树形控件静态编辑效果

第四步:在编辑菜单中,选择“当前值设置成默认值”项,然后存储树形控件所在的VI。

这样就完成了树形控件的静态编辑。

三、树形控件的常用属性、方法和事件

树形控件包含的数据类型为字符串或者字符串数组。如果允许多选,则树形控件会返回字符串数组;反之则返回字符串。虽然树形控件的值属性会返回树,但树形控件和树形控件的值属性可以直接和字符串或字符串数组连接。连接的字符串或者字符串数组,表示选中项目的标签字符串。

树形控件的属性和方法是实现树形控件动态填充的关键,需要仔细分析和理解。

1.树形控件常用属性

编辑位置:可读可写,用于获取或者设置当前文本编辑醒目的行或列索引,索引(0,0)表示左上角项目,索引(-1,-1)表示行首和列首,索引(-2,-2)表示未选择任何编辑项。另外必须设置可编辑单元格后才能使用“编辑位置”属性。

显示层次为0的项缩进/移出符号:可读可写,用于获取或设置是否显示顶层根项的缩进/移出符号。隐藏缩进/移出符号是,缩进等级为0的项将与树形控件的左侧对齐。

缩进/移出符号类型:可读可写,用于获取或设置缩进/移出符号的类型。有效值包括0(None)、1(LabVIEW)、2(Mac OS)、3(Windows)和4(Default)。

显示的项:只读属性,用于获取所有可见项的项目标识,并按显示次序排列。未展开子项不返回。

行数和列数:读写属性,用于获取或者设置树形控件可见部分的行数和列数。

行列首字符串:读写属性,用于获取或设置行首列首字符串。

活动列数:读写属性,用于获取或者设置活动单元格所在的列。值设置为-2表示选择所有列;值为-1表示选择列首;值为0表示选择第1列。

字体:读写属性,用于设置活动单元格字体、背景颜色、对齐方式等显示效果。

单元格大小:读写属性,用于读取或者设置单元格的高度和宽度。

标识符:用于设置标识符项目为活动项目,其后所有操作针对活动项进行。

所有标识符:用于从上至下返回所有项目的标识符。

2.树形控件常用方法

排列子项:用于对某一项的子项按字母顺序进行排列。

删除项:在树形控件中删除指定项。如需删除树形控件所有相,可设置标识符为空字符串,并设置删除子项为TRUE。

添加项:在树形控件中添加指定项。

添加项到末尾:在树形控件现有项之后添加项。

添加多个项到末尾:在树形控件现有项之后同时添加多个项。

获取子项:根据给定的父项标识,获取它的第一个子项。最顶端的项没有父项,为空字符串。如果没有子项则返回空字符串。

获取最后一项:用于返回同一层次(即同属于一个父项)指定标识之后的子项标识。如不存在则返回空字符串。

获取前一项:用于返回同一层次指定标识项之前的项目。如果不存在返回空字符串。

获取父项:用于返回子项的父项,如果为空则为顶层项目。

获取路径:用于返回顶层至指定子项之间所有项的标识符字符串数组。

打开/关闭全部:用于展开或者关闭树形控件的所有节点。值为TRUE时展开所有节点,值为FALSE时关闭所有节点。

打开/关闭项:用于展开或者关闭指定项的子项。值为TRUE时展开子项。值为FALSE时关闭子项。

点到行列:用于返回像素点所在位置的标识和列,同时返回像素点是否在内容区域边界内和自定义符号内。

显示层次结构线:用于设置是否显示水平和垂直分隔线。若显示则能更清楚地显示出项目的层次结构。

3.树形控件的常用事件

树形控件中一些重要的事件为事件结构的编程提供了极大方便。如:

“编辑单元格”事件:编辑某个单元格是触发该事件,树形控件必须设置为可编辑的模式才能产生事件。

“双击”事件:双击树形控件时会发生此事件,并返回双击行的项目标识。

“项打开”事件:某个父项展开时发生的事件。

“项关闭”事件:某个父项关闭时发生的事件。

以上就可以实现树形控件的动态填充。动态填充的关键在于属性和方法的使用,其中方法节点尤为重要。下面通过一些具体范例简单介绍如何使用这些属性、方法和事件。

四、树形控件的一些应用方法

1.“删除项”和“添加多个项到末尾”方法

在树形控件填充之前,首先需要通过“删除项”方法删除树形控件中的原有项。“删除项”方法通常用于具体删除某个项。如果项目标识为空(默认)且“删除子项”输入参数设置为TRUE,则删除树形控件的所有项目。此方法多用于程序初始化时,清空树形控件。

如下图所示,“罗列文件夹与文件”函数连接的路径是“默认目录”函数,及LabVIEW.EXE文件所在目录,该函数返回指定文件下的所有文件夹及文件。图中使用了树形控件的“添加多个项目到末尾”方法,该方法的输入端子是簇数组,簇数组的元素为一个具体的项目。

树形控件项目的数据类型为LabVIEW内部自定义的簇,通过树形控件“添加多个项目至末尾”方法的快捷菜单建立常量函数,从数组中拖出一个簇元素,即可抽取这个自定义的簇类型。这是一个使用LabVIEW内部自定义类型的重要技巧。

图1-5 动态填充文件夹和文件名至树形控件

2.获取同辈项目方法

同辈项目是指具有相同父项的项目,查找同辈项目是树形控件的常用操作。树形控件提供了获取所有项目标识的属性,但没有提供获取同辈项目标识的属性和方法,需要编程实现。如下图所示,可以获取所有同辈的项目标识。

此VI的输入端子使用了树形控件引用,因此这个VI可以用于任何树形控件,首先使用“获取子项”方法取得指定了父项的首个子项,然后利用“获取下一个子项”方法,通过循环取得所有子项。如下图所示数组中“王某、范某、胡某”为父类“二班”的同辈项目。

图1-6 获取同辈项目标识VI

也可获取同辈项目标识VI创建为子VI,通过“事件结构的鼠标按下”以及“点到行列”方法获取父项标识,再通过调用该VI获取同辈中所有标识符。

3.自定义项目符号

LabVIEW本身为树形控件自定义项目符号提供了一个非常好的范例,如下图所示。

图1-7 树形控件自定义项目符号

以上学习就基本掌握了树形结构的使用,但需要熟练使用在项目中还需要仔细理解这些属性和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2274334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Inno Setup制作安装包,安装给win加环境变量

加 ; 加环境变量,开启,下面一行 ChangesEnvironmentyes 和 ; 加环境变量wbrj变量名,{app}\project\bin变量值,{app}\后接文件名,{app}表示安装路径。下面一行,{olddata};原来的值上拼接 Root: HKLM; Subkey: “SYSTEM\…

张朝阳惊现CES展,为中国品牌 “代言”的同时,或将布局搜狐新战略!

每年年初,科技圈的目光都会聚焦在美国拉斯维加斯,因为这里将上演一场被誉为 “科技春晚” 的年度大戏 ——CES 国际消费电子展。作为全球规模最大、最具影响力的科技展会之一,CES 吸引了来自 160 多个国家的创新者和行业领导者,是…

UDS诊断之0x27服务—结合实例讲解

前言: 本文讲解的是比较深入一点知识,对于一些刚入门的同学,建议直接先看一遍14229规范,然后找一个实际项目练练手!然后再来看本文,相信你会对0x27服务有更深的认知!!! …

React Router 向路由组件传state参数浏览器回退历史页面显示效果问题

昨天在看尚硅谷张天禹老师讲的 React教程p90,老师讲到 React路由的 replace模式和push模式,老师的演示效果与自己本地操作不太一样。 老师的效果:点击查看消息1,消息2,消息3 再点回退,可以依次查看到 消息…

静态路由配置与调试——计算机网络实训day1

文章目录 操作前准备一、实验目的二、实验要求三、实验过程1、在R1和R2上配置设备名称。基本配置设备命名 2、在R1和R2上配置接口IP地址,并查看IP地址的配置情况。3、在R1和R2上配置静态路由,并查看路由表。静态路由缺省路由(默认路由&#x…

【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜

HeadFirst设计模式开胃菜 前言 从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。 今天要分享的是【HeadFirst设计模式开胃菜】,主要介绍了设计模式的基本概念、设计模…

UOS系统和windows系统wps文档显示差异问题解决

最近在使用UOS系统的过程中,发现了一个很有意思的现象。就是在UOS系统上编辑的文档,发到windows系统上,会出现两个文档显示差异很大的情况,文档都是使用一样的wps软件打开的。到底是什么原因导致这种现象的呢?该如何解…

网络应用层HTTP协议

网络应用层HTTP协议 1. HTTP协议介绍 在互联网世界中,HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。…

B+树的原理及实现

文章目录 B树的原理及实现一、引言二、B树的特性1、结构特点2、节点类型3、阶数 三、B树的Java实现1、节点实现2、B树操作2.1、搜索2.2、插入2.3、删除2.4、遍历 3、B树的Java实现示例 四、总结 B树的原理及实现 一、引言 B树是一种基于B树的树形数据结构,它在数据…

在 macOS 中,设置自动将文件夹排在最前

文章目录 1、第一步访达设置2、第二步排序方式 需要两步设置 1、第一步访达设置 按名称排序的窗口中 2、第二步排序方式 选择名称

【数据库】Unity 使用 Sqlite 数据库

1.找到需要三个 DLL Mono.Data.Sqlite.dllSystem.Data.dllsqlite3.dll 上面两个dll可在本地unity安装目录找到: C:\Program Files\Unity\Hub\Editor\2022.3.xxf1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32 下面dll可在sqlite官网下载到&#xff…

国内使用博查SearchAPI进行智能搜索,通过API获取搜索引擎的天气、日历、百科、手机、火车票等信息

在现代开发中,网络资源搜索是关键且常见的需求。博查SearchAPI作为国内领先的智能搜索解决方案,已服务超过2000家企业和16000名开发者,获得腾讯元器、字节扣子、阿里钉钉等官方推荐。该API提供近百亿网页内容及多样的生态合作内容&#xff0c…

免费网站源码下载指南:如何安全获取并降低开发成本

许多开发者或是需要建立网站的人,可以方便地获取免费网站源码。这样的下载能帮助他们降低开发费用,迅速构建起基本框架。但在此过程中,仍有许多需要注意的事项。 许多开发者或是需要建立网站的人,可以方便地获取免费网站源码。这…

colnames看似简单,却能优化数据处理流程

引言 在数据处理和分析中,变量名称是至关重要的,它们决定了数据的可读性和操作的简便性。在R语言中,colnames 函数以其简单的语法设计,提供了高效管理数据框列名的能力,尤其是在复杂的爬虫任务中显得尤为重要。本篇文…

计算机网络例题

IP地址分类: A类:网络号范围: 1~126 (0000 0001 ~ 0111 1110) B类:网络号范围:128.1 ~ 191.255 (可用范围) C类:网络号段范围:192.0.1 ~ 223.2…

腾讯云AI代码助手编程挑战赛 - 使用 JavaScript 构建一个简易日历

功能简介: 动态年份选择:用户可以通过下拉框选择从 2000 年到 2050 年的任意年份。全年日历生成:根据用户选择的年份,动态生成该年份的所有 12 个月份的日历。直观的 UI 设计:使用 CSS 美化日历外观,使日历…

hive迁移后修复分区慢,怎么办?

我有1个30TB的分区表,客户给的带宽只有600MB,按照150%的耗时来算,大概要迁移17小时。 使用hive自带的修复分区命令(一般修复分区比迁移时间长一点),可能要花24小时。于是打算用前面黄大佬的牛B方案。 Hive增…

java-方法详解

目录​​​​​​​ 一、方法的定义 二、方法的调用 1.对于非静态方法: 2.对于静态方法: 3.类名.什么情况下可以省略 三、方法的参数传递 (1).实参和形参 形参 实参 (2).基本数据类型参数传递: (3).引用数据类型参数传递&#xff…

第二十八周机器学习笔记:PINN求正反解求PDE文献阅读——反问题、动手深度学习

第二十八周周报 一、文献阅读题目信息摘要Abstract网络架构实验——Data-driven discovery of partial differential equations(偏微分方程的数据驱动发现)1. Continuous time models(连续时间模型)例子:(Navier–Stok…

IT面试求职系列主题-Jenkins

想成功求职,必要的IT技能一样不能少,先说说Jenkins的必会知识吧。 1) 什么是Jenkins Jenkins 是一个用 Java 编写的开源持续集成工具。它跟踪版本控制系统,并在发生更改时启动和监视构建系统。 2)Maven、Ant和Jenkins有什么区别…