Редактируемая функциональность в uitable не работает: "Данные таблицы не редактируются в этом месте".
Я хочу, чтобы у моего пользователя были флажки, которые вы можете щелкнуть в нем. Если я сделаю это таким образом, я получу предупреждение: данные таблицы не редактируются в этом месте.
Как и сейчас, окна появляются, но вы не можете щелкнуть их.
p=figure
D={'1', '2', '3' ,'4', '5','6'
'7', '8', '9', '10', '11' ,'12'}
data=D(:,1)
cnames={'', 'Left', 'Right','P1', 'P2', 'P3'}
table_resultat_nip=uitable('position',[0 200 500 200],...
'parent',p,...
'columnname', cnames,...
'rowname', '',...
'data',data,...
'ColumnFormat',{'char','logical','logical','logical','logical','logical'},...
'columneditable',[false, true, true, true, true, true]) ;
1 ответ
Решение
Данные ячеек, которые вы хотите редактировать, должны быть в правильном формате.
Есть две проблемы:
1)
data = D(:,1);
Я понимаю, что вы просто хотите использовать данные первого столбца, но вам нужно объявить и другие столбцы как локальные.
2)
Ваши данные не соответствуют columnformat
так что лучше используйте:
D = {'1', false, false ,false, false, false; ...
'7', false, false, false, false, false};
Решение:
D = {'1', '2', '3' ,'4', '5','6' ;
'7', '8', '9', '10', '11' ,'12'};
data = [ D(:,1) num2cell( false( size(D,1) , size(D,2)-1) ) ];
%// where the -1 depends on how many "real" data columns you have.
или более общий:
N = 1; %// Number data columns to keep
data = [ D(:,1:N) num2cell( false( size(D,1) , size(D,2)-N) ) ];
В целом, следующий код работает, теперь вам нужно применить его к вашему делу:
p = figure;
D = {'1', '2', '3' ,'4', '5','6' ;
'7', '8', '9', '10', '11' ,'12'};
data = [ D(:,1) num2cell( false( size(D,1) , size(D,2)-1) ) ];
cnames = {'', 'Left', 'Right','P1', 'P2', 'P3'};
table_resultat_nip=uitable('position',[0 200 500 200],...
'columnname', cnames,...
'rowname', '',...
'data',data,...
'ColumnFormat',{'char','logical','logical','logical','logical','logical'},...
'ColumnEditable',[false, true, true, true, true, true]...
);
По поводу комментария:
Хорошо, еще более общий случай:
N = 1; %// Number data columns to keep
M = 5; %// Number of checkboxes desired
data = [ D(:,1:N) num2cell( false( size(D,1) , M) ) ];