主要内容

应用程序设计器中的回调

回调是一个当用户与应用程序中的UI组件交互时执行的函数。你可以使用回调来编程应用程序的行为。例如,你可以编写一个回调,当应用程序用户单击一个按钮时绘制一些数据,或者当用户与滑块交互时移动一个gauge组件的指针。

大多数组件至少有一个回调,每个回调都与组件的特定交互相关联。但是,有些组件(如标签和灯)没有回调,因为这些组件只显示信息。要查看组件支持的回调列表,请选择该组件并单击万博1manbetx回调选项卡中的浏览器组件

创建回调函数

有几种方法可以为UI组件创建回调。根据你在App Designer中的工作位置,你可以采用不同的方法。从下面的列表中选择最方便的方法:

  • 右键单击画布中的一个组件,浏览器组件,或应用程序的布局窗格,并选择回调>添加(callback属性)callback

    与滑块组件关联的上下文菜单。在Callbacks菜单项下,有添加ValueChangedFcn回调或ValueChangingFcn回调的选项。

  • 选择回调选项卡中的浏览器组件.左边的回调TAB显示支持的回调属性。万博1manbetx每个回调属性旁边的下拉列表允许您为回调函数指定名称,或在尖括号<>中选择默认名称。如果您的应用程序有现有的回调,下拉列表将包括这些回调。当您希望多个UI组件执行相同的代码时,请选择现有的回调。

    组件浏览器的回调选项卡,其中选择了旋转器组件。有ValueChangedFcn回调和ValueChangingFcn回调的选项。

  • 在代码中代码视图,在编辑器选项卡上,单击回调.或者,在代码浏览器窗格,在回调选项卡,单击+按钮。

    “添加回调函数”对话框。可以从下拉列表中选择组件和回调,也可以指定回调函数名。

    在“添加回调函数”对话框中指定这些选项:

    • 组件-指定执行回调的UI组件。

    • 回调—指定回调属性。callback属性将回调函数映射到特定的交互。有些组件有多个可用的回调属性。例如,滑块有两个回调属性:ValueChangedFcn而且ValueChangingFcn.的ValueChangedFcn回调函数在用户移动滑块并释放鼠标后执行。的ValueChangingFcn同一组件的回调函数在用户移动滑块时重复执行。

    • 的名字—指定回调函数名称。App Designer提供了一个默认名称,但您可以在文本字段中更改它。如果应用程序有现有的回调函数,则的名字字段旁边有一个下拉箭头,指示您可以从列表中选择现有的回调。

程序回调函数

为组件创建回调函数时,App Designer会在代码视图并将光标放在函数中。在这个回调函数中编写代码来编写回调行为。

回调输入参数

App Designer创建的所有回调函数在函数签名中都有这些输入参数:

  • 应用程序- - -应用程序对象。使用该对象可以访问应用程序中的UI组件以及存储为属性的其他变量。

  • 事件-一个包含应用程序用户与UI组件交互的特定信息的对象。

应用程序参数提供应用程序反对回调。你可以使用下面的语法访问任何回调中的任何组件(以及所有组件特定的属性):

应用程序。组件财产

例如,此命令设置价值量规的特性50.在本例中,量规的名称为PressureGauge

app. pressurege . value = 50;

事件参数提供了一个具有不同属性的对象,这取决于正在执行的特定回调。对象属性包含与回调响应的交互类型相关的信息。例如,事件的论证ValueChangingFcn滑块的回调函数包含一个名为价值.该属性存储用户移动拇指时的滑块值(在用户释放鼠标之前)。这是一个滑块回调函数,它使用事件参数使量规跟踪滑块的值:

函数SliderValueChanging(app,event) latestvalue = event. value;%当前滑块值app. pressuregge . value =最新值;%更新仪表结束
要了解更多关于事件参数,请参见该组件的属性页。右键单击组件,并选择选择帮助打开属性页。有关所有UI组件的属性页列表,请参见应用程序构建组件

在回调函数之间共享数据

若要存储需要由多个回调函数访问的数据,请创建财产.属性包含属于应用程序的数据私有财产存储只在应用程序内共享的数据,或者公共属性存储要在应用程序外部共享的数据(例如,与需要访问数据的脚本、函数或其他应用程序)。

控件创建公共或私有属性财产按钮中的编辑器选项卡代码视图.为您的属性输入名称。然后,您可以使用该语法在所有应用程序回调中分配和访问属性值应用程序。PropertyName

有关更多信息,请参见在应用程序设计程序中共享数据

在多个组件之间共享回调

当你想在应用程序中提供多种方式来做某事时,在组件之间共享回调是有用的。例如,当用户单击按钮或按下输入在编辑字段中键入。

为一个组件创建回调后,可以通过将它分配给第二个组件来共享它。控件中的第二个组件单击右键浏览器组件并选择回调>选择现有的回调.当弹出“选择回调函数”对话框时,从控件中选择现有的回调函数的名字下拉列表。

有关在两个组件之间共享回调的应用程序示例,请参见为多个应用程序设计器组件使用一个回调

以编程方式创建和分配回调

你也可以在应用程序代码中以编程方式创建和分配回调函数。控件中没有出现的组件或图形对象,可使用此方法为其创建回调浏览器组件.例如,你可以通过编程的方式将回调分配给你在应用程序代码中创建的对话框,或者分配给对象中绘制的UIAxes组件。

通过选择将回调函数创建为私有函数函数>私有函数编辑器工具条的选项卡。函数必须有应用程序src,事件正如前三个参数一样。下面是一个回调函数的例子:

方法(访问=私有)函数myclosefcn(应用程序、src、事件)disp (“祝你今天过得愉快!”);结束结束

通过使用该语法将回调属性值指定为回调函数的句柄,将回调函数分配给组件@app。FunctionName.例如,此代码创建一个警报对话框,用于分配myclosefcn函数到CloseFcn回调的财产。该函数在对话框关闭时执行。

uialert(应用程序。UIFigure,"文件未找到"“警告”...“CloseFcn”, @app.myclosefcn);

要编写接受附加输入参数的回调函数,请在前三个参数之后指定附加参数。例如,这个回调函数接受一个额外的输入,的名字

方法(访问=私有)函数Displaymsg (app,src,event,name) MSG = name +“对话框关闭”;disp(味精);结束结束

若要将此回调分配给组件,请将组件回调属性指定为单元格数组。单元格数组中的第一个元素必须是函数句柄。后续元素必须是附加的输入值。例如:

uialert(应用程序。UIFigure,"文件未找到"“警告”...“CloseFcn”, {@app.displaymsg,“警告”});

有关更多信息,请参见以编程方式将UI组件添加到应用程序设计器

在代码中搜索回调

如果你的应用程序有很多回调函数,你可以通过在顶部的搜索栏中输入部分名称来快速搜索和导航到特定的回调函数回调选项卡中的代码浏览器.在你开始打字后,回调窗格清除,与搜索匹配的回调除外。

“代码浏览器”的“回调”选项卡。搜索栏有文本“Slider”,面板列出了SliderValueChanging函数。

单击搜索结果可将回调滚动到视图中。右键单击搜索结果并选择将光标放在回调函数中。

更改或断开回调

控件中的组件要指定不同的回调,请选择该组件浏览器组件.然后单击回调选项卡,并从下拉列表中选择不同的回调。下拉列表只显示现有的回调。

“组件浏览器”中编辑字段组件的“回调”选项卡。ValueChangedFcn下拉列表被展开,列出了两个现有的回调函数。

控件中的组件若要断开与组件共享的回调,请选择该组件浏览器组件.然后单击回调按TAB键选择<没有回调>从下拉菜单。选择此选项只断开回调与组件的连接。它不会从代码中删除函数定义,也不会断开与任何其他组件的回调。断开回调后,您可以为组件创建一个新的回调,或者让组件没有回调函数。

删除回调

如果你的代码包含一个回调函数,而该回调函数没有被应用程序中的任何组件使用,你可以完全删除该函数。中右键单击回调来删除回调回调的TAB代码浏览器并选择删除从上下文菜单。

“代码浏览器”的“回调”选项卡。与stopbuttonpushing回调函数关联的上下文菜单具有删除、重命名、插入光标和转到的选项。

示例:带有滑块回调的应用程序

这个应用程序包含一个测量器,当用户移动拇指时跟踪滑块的值。的ValueChangingFcn的回调函数获取滑块的当前值事件论点。然后它移动量针到该值。

相关的话题