Main Content

matlab.system.display.Action クラス

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

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

説明

matlab.system.display.Action クラスを使用して、MATLAB System ブロックの [ブロック パラメーター] ダイアログ ボックスにカスタム ボタンを実装します。このボタンで 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 で導入