Main Content

matlab.system.display.Action クラス

パッケージ: matlab.system.display
スーパークラス:

構文

matlab.system.display.Action(action)
matlab.system.display.Action(action,Name,Value)

説明

matlab.system.display.Action(action) は、MATLAB System ブロックに表示されるボタンを指定します。このボタンは、System object™ メソッドを起動するか MATLAB® の関数またはコードを呼び出して、対応する機能を実行します。

ボタンの一般的な機能の 1 つに Figure の起動があります。起動される Figure はブロック ダイアログ ボックスからは分離されていて、ブロックに対する変更は表示中の Figure には同期されません。

matlab.system.display.Action はクラス定義ファイルの getPropertyGroupsImpl メソッド内で定義します。複数のボタンを定義するには、クラス定義ファイルにそれぞれの matlab.system.display.Action のインスタンスを含めます。

matlab.system.display.Action(action,Name,Value) では、Name,Value のペアの引数を使用して任意のプロパティを指定できます。

入力引数

action

指定したボタンを MATLAB System ブロック ダイアログでユーザーがクリックしたときに実行されるアクション。このアクションは、関数ハンドルまたは MATLAB コマンドとして定義されます。アクションを関数ハンドルとして定義する場合は、関数定義で 2 つの入力を定義しなければなりません。これらの入力は matlab.system.display.ActionData オブジェクトと System object インスタンスであり、メソッドを呼び出すために使用できます。

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

名前と値のペアの引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

プロパティ

Name,Value のペアの引数を使用して、次のプロパティを入力の一部として指定します。必要に応じて、object.property 構文を使用して定義することもできます。

  • ActionCalledFcn — ボタンを押したときに実行されるアクション。このプロパティは名前と値のペアの引数を使用して指定することはできません。

  • Label — ボタンに表示されるテキスト。既定値は空の文字ベクトルです。

  • Description — ボタンのツールヒントのテキスト。既定値は空の文字ベクトルです。

  • Placement — プロパティ グループ内の各行におけるボタンの配置位置を示す文字ベクトル。有効な値は、'first''last'、プロパティ名です。プロパティ名を指定した場合、そのプロパティの上にボタンが配置されます。既定値は 'last' です。

  • Alignment — ボタンの整列方法を示す文字ベクトル。有効な値は 'left' および 'right' です。既定値は 'left' です。

すべて折りたたむ

ブロック ダイアログのパラメーター値を使用してランプをプロットする Figure を開く [可視化] ボタンとそれに関連する関数を定義します。

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
    
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 を指定すると、次のようなブロック ダイアログ ボックスが表示されます。

ボタンが 1 回より多く押されたときに複数の 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