2020-07-25 MATLAB App Designer——表格的logical选择
1.实现目的:
(1)选择含列“T/F”的单元格
1)选择含列“T/F”的单元格设置为真,若所在列“时程”的同行单元格为空则选中为真,若所在列“时程”的同行单元格为真则选中为真;
2)选择含列“T/F”的单元格设置为空,若所在列“时程”的同行单元格为空则选中为空,若所在列“时程”的同行单元格为真则选中为真;
(2)选择含列“时程”的单元格
1)选择含列“时程”的单元格设置为真,所在列“T/F”的同行单元格值不变;
2)选择含列“时程”的单元格设置为空,所在列“T/F”的同行单元格值为空;
2.效果图

3.回调函数
1. function [sourceData]=ifun_TableDataValueChangedFcn(app,BridgeNamesCacluateSyms,sourceData)
2. IDUnSameCell = ~eq(cell2mat(sourceData(:,[1,5:end])),...
3. cell2mat(BridgeNamesCacluateSyms(:,[1,5:end])));
4. if max(max(IDUnSameCell))==1 % 存在更新的内容
5. if max(max(IDUnSameCell(:,1))==1)==1 % T/F列 选中
6. RowIDUnSameCell=IDUnSameCell(:,1)==1; % 获取更改行
7. if max(cell2mat(sourceData(RowIDUnSameCell,5:end)))~=1 % 操作后工作簿列均为空
8. sourceData(RowIDUnSameCell,5:end)={1};
9. end
10. else % 工作簿列
11. RowIDUnSameCell=(max(IDUnSameCell(:,2:end),[],2)==1); % 获取更改行
12. if max(cell2mat(sourceData(RowIDUnSameCell,5:end)))~=1 % 操作后工作簿列均为空
13. sourceData(RowIDUnSameCell,1)={0};
14. end
15. end
16. end
17. end