2017-01-23 26 views
0

別のチェックボックスの状態に応じて、MATLAB/SIMULINKマスク(GUI)のチェックボックスの有効状態を設定しようとしています。つまり、チェックボックスAがチェックされている場合、チェックボックスBは無効(グレー表示)になります。 私はチェックボックスAにコールバック関数を使用しようとしました:マスクの状態に応じてmatlab/simulinkマスクを変更するにはどうすればよいですか?

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')を発行した後です。もう一度GUIを開くと、チェックボックスBがグレー表示になっています。 – 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 
関連する問題