Main Content

matlab.system.display.Action クラス

名前空間: matlab.system.display
スーパークラス: uint16

MATLAB System ブロックの [ブロック パラメーター] ダイアログ ボックス内にカスタム ボタンを作成する

説明

matlab.system.display.Action クラスを使用して、MATLAB System (Simulink) ブロックの [ブロック パラメーター] ダイアログ ボックス内にカスタム ボタンを実装します。ボタンでは System object™ メソッドを呼び出したり、他の任意の MATLAB® コードを実行したりできます。

たとえば、Figure を作成するボタンを実装できます。ボタンによって作成された Figure はブロックおよびブロック ダイアログ ボックスから分離されているため、Figure の作成後に行われたブロックに対する変更は Figure に同期されません。

クラス定義ファイルで getPropertyGroupsImpl メソッド内に matlab.system.display.Action クラスを定義します。クラス定義ファイルで matlab.system.display.Action クラスの別個のインスタンスを定義することで、複数のカスタム ボタンを定義できます。

クラスの属性

Sealed
true

クラス属性の詳細については、クラスの属性を参照してください。

作成

説明

actionButton = matlab.system.display.Action(act) は、MATLAB System ブロックのダイアログ ボックス内にボタンを作成し、ボタンを定義する Action クラスのインスタンスのプロパティを act に設定します。

actionButton = matlab.system.display.Action(act,Name,Value) は、1 つ以上の名前と値の引数を使用して定義されたボタンを定義する Action クラスのプロパティを指定して、MATLAB System ブロックのダイアログ ボックス内にボタンを作成します。

プロパティ

すべて展開する

ボタンが押されたときに実行するコード。関数ハンドルまたは MATLAB コマンドとして指定します。

ボタン アクションを関数ハンドルとして指定する場合は、関数シグネチャに以下の位置入力引数を設定する必要があります。

  • matlab.system.display.ActionData クラスのインスタンス

    ActionData クラスは表示アクションのコールバック オブジェクトです。UserData プロパティを使用して、Figure ハンドルなどの永続データを保存します。

  • System object インスタンス

属性:

GetAccess
public
SetAccess
public

データ型: function_handle

ボタンに表示するテキスト。string または文字ベクトルとして指定します。既定では、ボタン ラベルは空の文字ベクトル ('') です。

例: 'Visualize'

属性:

GetAccess
public
SetAccess
public

データ型: string | char

ボタンのツールヒントに表示するテキスト。string または文字ベクトルとして指定します。既定では、ボタンのツールヒントのテキストは空の文字ベクトル ('') です。

例: 'Visualize data in a figure window'

属性:

GetAccess
public
SetAccess
public

データ型: string | char

プロパティ グループ内のボタンの位置。次のいずれかのオプションとして指定します。

  • 'last' — ボタンはそれ自身の行でプロパティ グループ内の最後に表示されます。

  • 'first' — ボタンはそれ自身の行でプロパティ グループ内の最初に表示されます。

  • プロパティ グループ内のプロパティの名前を定義する string または文字ベクトル — ボタンはそれ自身の行で指定したプロパティの上に表示されます。

属性:

GetAccess
public
SetAccess
public

データ型: string | char

行内のボタンの配置。'left' または 'right' として指定します。

属性:

GetAccess
public
SetAccess
public

データ型: string | char

すべて折りたたむ

この例では、クラス定義に含めることができるメソッド定義を使用して、MATLAB System ブロックの [ブロック パラメーター] ダイアログ ボックス内にカスタム ボタンを実装します。この例のボタンは、ブロックの [ブロック パラメーター] ダイアログ ボックスを使用して指定された他のパラメーターの値を使用して、Figure ウィンドウにランプをプロットします。

メソッド定義内に、ボタンを作成し、getPropertyGroupImpl ボタンが押されたときのアクションを指定します。

methods(Static,Access = protected)
  function group = getPropertyGroupsImpl
      group = matlab.system.display.Section(mfilename("class"));
      group.Actions = matlab.system.display.Action(@(~,obj)...
      visualize(obj),"Label","Visualize");
  end
end

クラス定義ファイルの別の部分で、ボタンが押されたときに呼び出す関数を定義します。この例のコードにより、ボタンを押すたびに新しい Figure ウィンドウを開く機能が作成されます。

methods
  function obj = PlotRamp(varargin)
    setProperties(obj,nargin,varargin{:});
  end
        
  function visualize(obj)
    figure;
    d = 1:obj.RampLimit;
    plot(d);
  end
end

MATLAB System ブロックの System object の定義にこのコードが含まれている場合、MATLAB System ブロックの [ブロック パラメーター] ダイアログ ボックスに Visualize というラベルのボタンが表示されます。

A dialog box for a MATLAB System block contains a section labeled Parameters. The Parameters section has a parameter named RampLimit and a button labeled Visualize.

ボタンを押すたびに新しい Figure ウィンドウを開くのではなく、ボタンを押すたびに同じ Figure ウィンドウを開くには、代わりに次のようなコードを使用します。

methods(Static,Access = protected)
    function group = getPropertyGroupsImpl
      group = matlab.system.display.Section(mfilename('class'));
      group.Actions = matlab.system.display.Action(@(actionData,obj)...
      visualize(obj,actionData),'Label','Visualize');
    end
end
    
methods
    function obj = ActionDemo(varargin)
        setProperties(obj,nargin,varargin{:});
    end
        
    function visualize(obj,actionData)
        f = actionData.UserData;

        if isempty(f) || ~ishandle(f)
            f = figure;
            actionData.UserData = f;
        else
            figure(f); % Make figure current
        end
        
        d = 1:obj.RampLimit;
        plot(d);
    end
end

バージョン履歴

R2015a で導入