MATLAB App Designer:2020-10-12 锁定uitable部分单元格方法

背景

工作中遇到一个情况,就是要设置下面图中,黑色的单元格内容无论怎么修改 true 或者 false 都显示为 false的情况

实例图片

尝试

1.对于uitable控件来说,采用ColumnEditable属性控制

只适用于列控制,故仅修改列的ColumnEditable属性是无法实现的

2.针对方法1进行修改,实现功能:当鼠标点选黑色单元格的时候,设置该列属性ColumnEditable为false,表格选中的回调函数代码如下:

    % 表名 app.ViewAnalysisData Id = cell2mat(arrayfun(@(x)sum( ...          source.StyleConfigurations.Style(x).BackgroundColor)==3,...          (1:height(source.StyleConfigurations)),'Un',false))==1;  Id = source.StyleConfigurations.TargetIndex{Id}==event.Indices; if  max(Id(:,1)&Id(:,2))==1        app.ViewAnalysisData.ColumnEditable(unique(event.Indices(:,2))) = true; else       app.ViewAnalysisData.ColumnEditable(unique(event.Indices(:,2))) = false; end
方法2 存在一个问题,采用鼠标修改Sheet1和时程列的true和false时,matlab支持单元格选中在点击checkbox修改(2方法适用)和直接点击checkbox修改(2方法则不适用,程序报错)

3.对表格控件的DisplayDataChangedFcn进行修改,凡是source.Data中包含黑色单元格的均不传递给表格控件app.ViewAnalysisData.Data,代码如下:

 % 表名 app.ViewAnalysisData Id = cell2mat(arrayfun(@(x)sum( ...          app.ViewAnalysisData.StyleConfigurations.Style(x).BackgroundColor)==0,...                     (1:height(app.ViewAnalysisData.StyleConfigurations)),'Un',false))==1; Id = app.ViewAnalysisData.StyleConfigurations.TargetIndex{Id==1}; % 获取黑色单元格的单元的Indices source.Data(Id(:,1),Id(:,2)) = {''};  % 删除包含黑色单元格的单元Indices app.ViewAnalysisData.Data  = source.Data; % 将剔除后的数据传递给表格控件

评价

推荐方法3,支持matlab单元格选中在点击checkbox修改(2方法适用)和直接点击checkbox修改的两种途径

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

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

* 公司名称:

姓名不为空

手机不正确

公司不为空