2017-01-23 3 views
0

Я пытаюсь установить состояние Включено флажок в матовой/симуляционной маске (GUI) в зависимости от состояния другого флажка. Другими словами: если установлен флажок «А», флажок «В» должен быть отключен (серый). Я пытался использовать функцию обратного вызова флажок, А:Как изменить матовую маску/маску в зависимости от состояния маски?

box_A = get_param(gcb, 'checkBoxA'); 
m = Simulink.Mask.get(gcb); 
box_B = m.getParameter('checkBoxB'); 

if strcmp(box_A, 'on') 
    box_B.set('Enabled', 'off'); 
end 

Но когда я открываю маску, я получаю сообщение об ошибке:

-->Error evaluating 'MaskCallback' callback of TEST block (mask) 'test_simulink /Test test'. -->Invalid inputs specified for method 'set' -->Attempt to modify mask parameter name of block 'test_simulink/Test test' in its MaskCallbacks. Changing mask parameter name as part of MaskCallbacks is not allowed.

Как я могу выполнить свою первоначальную цель?

+0

Я не вижу ничего плохого в коде. Вы проверяли, являются ли имена параметров точными, и можете ли вы сделать то же самое в командной строке MATLAB? – Navan

+0

Из командной строки matlab он работает, то есть после того, как я выхожу box_B.set ('Enabled', 'off'); и снова откройте графический интерфейс, установите флажок «В». – lineinthesand

ответ

1

Я наконец нашел решение; трюк заключается не в использовании функции set, а в присвоении свойства Enabled:

box_A = get_param(gcb, 'checkBoxA'); 
m = Simulink.Mask.get(gcb); 
box_B = m.getParameter('checkBoxB'); 

if strcmp(box_A, 'on') 
    box_B.Enabled = 'off'; 
else 
    box_B.Enabled = 'on'; 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^