Main Content

matlab.system.display.Action 类

命名空间: matlab.system.display
超类: uint16

在 MATLAB System 模块的“模块参数”对话框中创建自定义按钮

描述

使用 matlab.system.display.Action 类在 MATLAB System (Simulink) 模块的“模块参数”对话框中实现自定义按钮。该按钮可以调用 System object™ 方法或运行任何其他 MATLAB® 代码。

例如,您可以实现创建图窗的按钮。该按钮创建的图窗与模块和模块对话框分离,这样在创建图窗后,对模块的更改不会同步到图窗。

在类定义文件的 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) 使用 Action 类的属性在 MATLAB System 模块的对话框中创建一个按钮,该类定义使用一个或多个名称-值参量定义的按钮。

属性

全部展开

按下按钮时要执行的代码,指定为函数句柄或 MATLAB 命令。

当您将按钮操作指定为函数句柄时,函数签名必须具有以下位置输入参量:

  • matlab.system.display.ActionData 类的实例

    ActionData 类是显示操作的回调对象。使用 UserData 属性存储持久数据,例如图窗句柄。

  • System object 实例

属性:

GetAccess
public
SetAccess
public

数据类型: function_handle

要在按钮上显示的文本,指定为字符串或字符向量。默认情况下,按钮标签是空字符向量 ('')。

示例: 'Visualize'

属性:

GetAccess
public
SetAccess
public

数据类型: string | char

要在按钮工具提示中显示的文本,指定为字符串或字符向量。默认情况下,按钮工具提示文本是空字符向量 ('')。

示例: 'Visualize data in a figure window'

属性:

GetAccess
public
SetAccess
public

数据类型: string | char

属性组中按钮的位置,指定为以下选项之一:

  • 'last' - 按钮出现在属性组中该按钮所在行的末尾。

  • 'first' - 按钮出现在属性组中该按钮所在行的开头。

  • 定义属性组中属性名称的字符串或字符向量 - 按钮出现在指定属性上方的单独一行中。

属性:

GetAccess
public
SetAccess
public

数据类型: string | char

行内按钮的对齐方式,指定为 'left''right'

属性:

GetAccess
public
SetAccess
public

数据类型: string | char

示例

全部折叠

此示例说明可以包含在类定义中的方法定义,用于在 MATLAB System 模块的“模块参数”对话框中实现自定义按钮。此示例中的按钮使用通过模块的“模块参数”对话框指定的其他参数值在图窗窗口中绘制斜坡。

创建该按钮并在 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

在类定义文件的另一部分,定义按钮按下时调用的函数。此示例代码导致每次按下该按钮时都会打开一个新图窗窗口。

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.

要在每次按下按钮时打开同一个图窗窗口,而不是每次按下按钮时都打开一个新的图窗窗口,请改用如下代码。

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 中推出