MATLAB App Designer:uitreenode CheckBox值修改方法

1. 项目背景

有个项目需求,也就是对下图选中的节点(uitreenode)采用代码进行checkBox的修改,将true改为false

修改前

修改后

结构树建立方法: Tag % 用于定位句柄 'checkbox'% 设置当前控件可以设置checkbox   % 参考链接:https://ww2.mathworks.cn/help/matlab/ref/matlab.ui.container.checkboxtree-properties.html

2. 获取选中节点

 BridgeCode % 选中节点的父节点 Tag  % Text  % 用于查找定位想要的节点

3. 设置节点的CheckBox值

3.1 在已找到节点的情况下,在Tree_BridgeCodeInfo(树句柄)中的CheckedNodes属性中查找是否存在指定节点:

Tree_BridgeCodeInfo(树句柄)中的CheckedNodes属性存在指定节点TimeStr,则CHeckBox值为true,否则为false;

CheckedNodes属性存储的是数组

3.2 由于CheckedNodes属性存储的是数组,故采用 arrayfun 函数,如下:

查找指定的TimeStr(Text为:'2021-11-25 23:00~2021-11-28 23:23(39/39)')在CheckedNodes属性的ID:

查找结果

3.3 删除找到的ID对应的数组数据来修改指定节点指定的 TimeStr(Text为:'2021-11-25 23:00~2021-11-28 23:23(39/39)')的CheckBox为false

 % Tree_BridgeCodeInfo.CheckedNodes(cell2mat(arrayfun( @(x) strcmp(x.Tag,'TimeStr')==1 & strcmp(x.Text,TreeDataTable.TimeStr)==1,...                         Tree_BridgeCodeInfo.CheckedNodes,'UniformOutput',false)) | ...                         cell2mat(arrayfun( @(x) strcmp(x.Tag,'BridgeCode')==1 & strcmp(x.Text,TreeDataTable.BridgeCode)==1,...                         Tree_BridgeCodeInfo.CheckedNodes,'UniformOutput',false)) | ...                         cell2mat(arrayfun( @(x) strcmp(x.Tag,'Project')==1 & strcmp(x.Text,TreeDataTable.Project)==1,...                         Tree_BridgeCodeInfo.CheckedNodes,'UniformOutput',false)),:) = [];

3.4 效果图

修改后

4. 进阶版

以上适用于 节点(Text :WHL)的CHildren都选中的情况,但如果想对修改后的情况下,节点(Text: '2021-11-25 23:00~2021-11-25 23:23(39/39)')的CheckBox修改为false,则方法不同;

修改完后的Tree_BridgeCodeInfo.CheckedNodes属性为:

修改完后的Tree_BridgeCodeInfo.CheckedNodes

也就是说,只要找到节点(Text: '2021-11-25 23:00~2021-11-25 23:23(39/39)')并删除其在Tree_BridgeCodeInfo.CheckedNodes的数组就可以,不需要想之前还需要删除其之前的所有的父(到最高层节点),执行命令的例子如下:

执行效果

执行后的Tree_BridgeCodeInfo.CheckedNodes属性

By 卓越工作室 2021年5月3日00:15:23

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空