uitable's cells as a readonly
15 次查看(过去 30 天)
显示 更早的评论
Hi,
I would like to know how I can set several cells of a uitable like a readonly effect.
Thanks
regards.
2 个评论
Sarah Wait Zaranek
2011-3-1
Would you like them to be not editable? Did you already try the "ColumnEditable" property?
采纳的回答
Mtlb Usr
2011-3-3
2 个评论
Oleg Komarov
2011-3-3
Unfortunately I see the general problem but I don't have R2007b, don't see how I can help you.
* You may try to update your current version, if feasible
* Use this submission http://www.mathworks.com/matlabcentral/fileexchange/11201
* This thread may be useful: http://www.mathworks.com/matlabcentral/newsreader/view_thread/165066
* And finally this migration note for uitable from 2007b to 2008a: http://www.mathworks.com/help/techdoc/uitools_csh/error_pages/uitable_errorpage.html
更多回答(1 个)
Oleg Komarov
2011-3-1
Here an example that allows you to set as non editable just some cells of a column:
function exampleGUI
f = figure('Position',[200 200 400 150]);
dat = rand(3);
cnames = {'X-Data','Y-Data','Z-Data'};
rnames = {'First','Second','Third'};
t = uitable('Parent',f,'Data',dat,'ColumnName',cnames,...
'RowName',rnames,'Position',[20 20 360 100],...
'ColumnEditable',[true true true],'CellEditCallback',@t_ced);
function t_ced(varargin)
% Retrieve info on edited cell
edC = varargin{2};
% Transform subscipts of selected cell into idx
idx = sub2ind(size(dat),edC.Indices(1),edC.Indices(2));
% If idx falls into 5-9 range set back previous value
if ismember(idx, 5:9)
data = get(t,'data');
data(idx) = edC.PreviousData;
set(t,'data',data)
end
end
end
Save it as exampleGUI and run it. Only cells 5-9 are non editable.
3 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!