Программирование функции для CellSelectionCallback

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

Sandro
Пользователь
Сообщения: 108
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Программирование функции для CellSelectionCallback

Сообщение Sandro » Чт авг 02, 2018 11:25 am

В App Designer программно создаю форму и на ней таблицу:

hTP = uitable(hTabDat, ..... Свойства таблицы...);
hTP.CellSelectionCallback = @app.selectPoint;
...
hTP.Data = dat;

Предполагается, что при выборе какой-либо строки в таблице логический элемент в строке становится "true",
а остальные в столбце изменяются на "false":

function selectPoint(app, src, event)
ind = event.Indices(1); % - 1 шаг
src.Data(:,1) = {false}; % - 2 шаг
src.Data(ind,1) = {true}; % - 3 шаг
% event.Source.Data(:,1) = {false};
% event.Source.Data(ind,1) = {true};
% --- В этом месте сообщение об ошибке

end

В принципе код выполняется, но с выводом сообщений об ошибке:

Index exceeds array bounds.
Error in AllSkyExplorer/selectPoint (line 484)
ind = event.Indices(1);
Error in AllSkyExplorer>@(varargin)app.selectPoint(varargin{:}) (line 913)
hTP.CellSelectionCallback = @app.selectPoint;

Error while evaluating Table CellSelectionCallback.

При пошаговом просмотре выполнения кода происходит следующее:
Выполняется 1, после выполнения 2 шага происходит переход на следующий шаг 3, но он не выполняется, а возвращается на 1 шаг
выводится сообщение об ошибке и только после этого 2, 3 шаги.