Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

動的なマスク ダイアログ ボックス

ユーザー入力に対応して変化するマスク ブロックのためのダイアログを作成できます。この方法で変更可能なマスク ダイアログの機能には、次のようなものがあります。

  • パラメーター コントロールの可視性 — パラメーターを変更することで、他のパラメーターのためのコントロールを表示したり、非表示にしたりできます。コントロールが現れたり消えたりすると、ダイアログは拡張されたり縮小されたりします。

  • パラメーター コントロールの有効状態 — パラメーターを変更することで、他のパラメーターのためのコントロールの入力を有効にしたり、無効にしたりできます。無効なコントロールは、無効であることを視覚的に示すために灰色で表示されます。

  • パラメーター値 — マスク ダイアログ ボックス パラメーターを変更することで、関連付けられているマスク ダイアログ ボックス パラメーターを適切な値に設定できます。

メモ

マスク パラメーターの追加、削除、変更は、マスク コールバックから制限されます。

動的なマスク ダイアログ ボックスを作成するには、マスク エディターを set_param コマンドとともに使用する必要があります。厳密には、まずマスク エディター使って静的なものと動的なものの両方のすべてのダイアログ ボックス パラメーターを定義します。各動的パラメーターを変更するには、ダイアログ ボックスの応答方法を定義するコールバック関数を入力します (コールバック コードの実行を参照)。コールバック関数は、今度は、set_param コマンドを使用して、ダイアログ ボックスの他のコントロールの外観と設定に影響を与えるマスク パラメーターを設定します (動的なマスク ダイアログ ボックスの作成を参照)。最後に、動的マスク ダイアログ ボックスの作成を確定するためにマスク サブシステムを含むモデルやライブラリを保存します。

関連する例については、「動的マスク ダイアログ ボックスを作成する」を参照してください。

パラメーターを表示する

選択されたパラメーターがマスク ダイアログ ボックスに表示されるのは、このオプションがオンになっている場合 (既定) のみです。

パラメーターを有効にする

このオプションを解除すると、選択されたパラメーターのプロンプトがグレー表示になり、プロンプトの編集コントロールが無効になります。

動的なマスク ダイアログ ボックスの作成

この例では、入力内容に応じて表示が変わるマスク ダイアログ ボックスを作成する方法を示します。

このマスク ダイアログ ボックスを使用する 2 つのパラメーターを設定できます。1 つ目のパラメーターは、3 つのゲイン値 (25 または User-defined) のいずれかを選択するポップアップ メニューです。このポップアップ メニューで選択した値に応じて、ゲインを指定する編集フィールドの表示/非表示が決まります。

  1. サブシステムを選択し、[Subsystem ブロック] タブの [マスク] グループで [マスクの作成] をクリックします。

  2. マスク エディターで [パラメーターとダイアログ] ペインを選択します。

  3. [ポップアップ] パラメーターをドラッグ アンド ドロップし、[ダイアログ ボックス] ペインで選択します。

    1. [プロンプト] フィールドに「Gain」と入力します。

    2. [名前] フィールドに「gainpopup」と入力します。

    3. ポップアップに指定したリテラル値を Simulink® が使用するように、[プロパティ エディター] ペインで [評価] をオフにします。

    4. [データ型オプション] フィールドで、[編集] ボタンをクリックし、[ポップアップ オプション] ダイアログ ボックスに次の 3 つの値を入力します。

      2
      5
      User-defined

  4. [ダイアログ] の [コールバック] フィールドに次のコードを入力します。

    % Get the mask parameter values. This is a cell
    %   array of character vectors.
    maskStr = get_param(gcb,'gainpopup');
    
    % The pop-up menu is the first mask parameter.
    %   Check the value selected in the pop-up 
    if strcmp(maskStr(1),'U'),
    
        % Set the visibility of both parameters on when 
        %   User-defined is selected in the pop-up.
    
        set_param(gcb,'MaskVisibilities',{'on';'on'}),
    
    else
    
        % Turn off the visibility of the Value field
        %   when User-defined is not selected.
    
        set_param(gcb,'MaskVisibilities',{'on';'off'}),
        
        % Set the character vector in the Values field equal to the
        % character vector selected in the Gain pop-up menu.
    
        %maskStr{2}=maskStr{1};
        set_param(gcb,'editvalue',maskStr);
    end

  5. [エディット] パラメーターをドラッグ アンド ドロップし、[ダイアログ ボックス] ペインで選択します。

    1. [プロンプト] フィールドに「Value」と入力します。

    2. [名前] フィールドに「editvalue」と入力します。

    3. [プロパティ エディター] ペインで、[表示] をオフにし、Simulink でこのプロパティの表示が既定でオフになるようにします。

  6. [適用] をクリックします。

  7. マスク ダイアログ ボックスを開くには、マスク サブシステムをダブルクリックします。

    [ゲイン]2 または 5 を選択した場合、Simulink では [値] は表示されません。[ゲイン]User-defined を選択した場合、[値] は表示されます。

入れ子にされたマスク ブロック パラメーターの設定

下位レベルのマスク サブシステムが上位レベルのマスク サブシステムによって定義されている記号を参照する場合に、下位レベルのマスク サブシステムにあるブロックのパラメーターの設定を試みると未解決の記号によるエラーを引き起こす可能性があります。このため、初期化されるマスク サブシステム内のマスク サブシステムに存在するブロックのパラメーターの設定に set_param コマンドを使用することは避けてください。下位レベルのマスク サブシステムが上位レベルのマスク サブシステムによって定義されている記号を参照するかどうか試します。

たとえば、マスク サブシステム A に、Gain ブロック C を含むマスク サブシステム B があり、その Gain パラメーターが B によって定義されている変数を参照していると仮定します。また、サブシステム A の初期化コードに次のコマンドが含まれていると仮定します。

set_param([gcb '/B/C'], 'SampleTime', '-1');

A を含むモデルのシミュレーションまたは更新を実行すると、未解決の記号によるエラーが発生します。

関連するトピック