Любые клавиши-модификаторы (например, shift, control), которые нажимаются при выборе uitable, могут быть обнаружены через родительский uifigure
(я назову его app.figMain
). Модификаторы возвращаются в виде массива ячеек с помощью недокументированной команды modifiers = get(app.figMain,'CurrentModifier')
. Вы можете использовать оператор if
, который выполняется только в том случае, если нажатие клавиш не указано в modifiers
. Другими словами, обратный вызов выбора таблицы выполняется только для щелчка левой кнопкой мыши, но не для щелчка с нажатой клавишей Shift, Ctrl + щелчок и т.д. c.
Реализация этого в данном коде:
function infoTableCellSelection(app, event)
modifiers = get(app.figMain,'CurrentModifier');
if isempty(modifiers) % Check that shift-key, ctrl-key, etc. is not pressed
indices = event.Indices;
data = app.infoTable.Data;
row = indices(:,1);
figSelect = uifigure;
selection = uiconfirm(figSelect,'Delete row?','Confirm Close',...
'Icon','question');
disp(selection);
disp(figSelect.SelectionType);
switch selection
case 'OK'
app.infoTable.Data(row,:) = [];
close(figSelect);
case 'Cancel'
close(figSelect);
return
end
end
end
MATLAB Undocumented описывает команду CurrentModifier
: CurrentModifier