App 设计工具中的回调

目录

创建回调函数

回调函数编程

回调输入参数

在回调函数之间共享数据

在多个组件之间共享回调

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

在代码中搜索回调

更改回调或断开与回调的连接

删除回调

示例:具有滑块回调的 App


        回调是在用户与 App 中的 UI 组件交互时执行的函数。可以使用回调对 App 的行为进行编程。例如,可以编写一个回调函数,用于在 App 用户点击按钮时绘制一些数据;或编写另一个回调函数,用于在用户与滑块交互时移动仪表组件的指针。

        大多数组件有至少一个回调,每个回调与该组件的一个特定交互绑定。但是,某些组件(如标签和信号灯)没有回调,因为这些组件仅显示信息。要查看某个组件支持的回调的列表,请选择该组件,然后点击组件浏览器中的回调选项卡。

创建回调函数

为 UI 组件创建回调有多种方法。根据您在 App 设计工具中的工作位置,可以采用不同方法。从列表中选择最方便的方法:

  • 右键点击画布中的一个组件、组件浏览器或 App 布局窗格,然后选择回调 > 添加(回调属性)回调

    Context menu associated with a slider component. Under the Callbacks menu item, there are options to add a ValueChangedFcn callback or a ValueChangingFcn callback.

  • 组件浏览器中选择回调选项卡。回调选项卡的左侧显示支持的回调属性。可以通过每个回调属性旁边的下拉列表来指定回调函数的名称,也可以选择尖括号<>中的默认名称。如果App 有现有回调,则下拉列表中会包含这些回调。当需要多个 UI 组件执行相同代码时,请选择一个现有回调。

  • 在代码的代码视图中,在编辑器选项卡中点击 

     回调。或者,在代码浏览器窗格的回调选项卡上,点击 

    Plus

     按钮。

    Add Callback Function dialog box. There are options to choose a component and a callback from drop-down lists, and to specify the callback function name.

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

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

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

    • 名称 - 为回调函数指定名称。App 设计工具会提供默认名称,但可以在文本字段中更改该名称。如果App 有现有回调,则名称字段旁边会有一个下拉箭头,表示可以从列表中选择一个现有回调。

回调函数编程

        为组件创建回调时,App 设计工具会在代码视图中生成回调函数,并将光标放在该函数中。在此回调函数中编写代码,对回调行为进行编程。

回调输入参数

App 设计工具创建的所有回调函数的函数签名中都有这些输入参数:

  • app - app 对象。使用此对象访问 App 中的 UI 组件以及存储为属性的其他变量。

  • event - 包含有关 App 用户与 UI 组件交互的特定信息的对象。

        app 参数为回调提供 app 对象。可以使用以下语法访问任何回调中的任何组件(以及特定于组件的所有属性):

app.Component.Property

        例如,以下命令将仪表的 Value 属性设置为 50。在此示例中,仪表的名称为 PressureGauge:

app.PressureGauge.Value = 50;

        event 参数提供具有不同属性的对象,具体取决于正在执行的特定回调。对象属性包含与回调响应的交互类型相关的信息。例如,滑块的 ValueChangingFcn 回调中的 event 参数包含一个名为 Value 的属性。该属性在用户移动滑块(释放鼠标之前)时存储滑块值。以下是一个滑块回调函数,它使用 event 参数使仪表跟踪滑块的值:

function SliderValueChanging(app,event)latestvalue = event.Value; % Current slider valueapp.PressureGauge.Value = latestvalue;  % Update gauge   
end

        ​要了解有关特定组件回调函数的 event 参数的更多信息,请参阅该组件的属性页。右键点击组件,然后选择关于所选内容的帮助打开属性页。有关所有 UI 组件的属性页列表,可以参考App 构建组件。

在回调函数之间共享数据

        要存储需要由多个回调访问的数据,请创建一个属性。属性包含属于 App 的数据。可以创建私有属性来存储仅在 App 内部共享数据,或创建公共属性来存储要在 App 外部共享数据(例如,脚本、函数或其他需要访问数据的 App)。

        在代码视图编辑器选项卡中,点击 

        属性按钮,创建公共或私有属性。输入属性的名称。然后,可以使用语法 app.PropertyName 在所有 App 回调中指定和访问属性值。

在多个组件之间共享回调

        当要在App 中提供多种方法来执行某个操作时,在组件间共享回调非常有用。例如,当用户点击按钮或在编辑字段中按下 Enter 键时,App 可以用同样的方式响应。

        可以为回调类型相同的多个所选组件创建单个共享回调。例如,在一个包含一个编辑字段和一个滑块的 App 中,您可以同时选中这两个组件,右键点击其中一个,然后选择回调 > 添加 ValueChangingFcn 回调。App 设计工具会创建一个新回调,并将其分配给编辑字段和滑块。

        或者,为一个组件创建回调后,可以通过将其分配给另一个组件来共享它。在组件浏览器中右键点击第二个组件,然后选择回调 > 选择现有的回调。当显示“选择回调函数”对话框时,从名称下拉列表中选择现有的回调。

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

        还可以在 App 代码中以编程方式创建和分配回调函数。使用此方法为未出现在组件浏览器中的组件或图形对象创建回调。例如,您可以通过编程方式将回调分配给在 App 代码中创建的对话框,或分配给在 UIAxes 组件中绘制的 Line 对象。

        通过在工具条的编辑器选项卡中选择函数 > 私有函数,将回调函数创建为私有函数。该函数必须将 app、src 和 event 作为前三个参数。下面是作为私有函数编写的回调的示例:

methods (Access = private)function myclosefcn(app,src,event)disp('Have a nice day!');endend

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

uialert(app.UIFigure,"File not found","Alert", ..."CloseFcn",@app.myclosefcn);

        要编写接受附加输入参数的回调函数,请在前三个参数后指定附加参数。例如,以下回调接受一个额外的输入 name:

methods (Access = private)function displaymsg(app,src,event,name)msg = name + " dialog box closed";disp(msg);endend

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

uialert(app.UIFigure,"File not found","Alert", ..."CloseFcn",{@app.displaymsg,"Alert"});

在代码中搜索回调

        如果App 有很多回调,您可以通过在代码浏览器中的回调选项卡顶部的搜索栏中键入部分名称,以快速搜索并导航到特定回调。开始键入后,回调窗格的内容将被清除,但会显示符合搜索条件的回调。

Callbacks tab of the Code Browser. The search bar has the text "Slider" and the pane lists the SliderValueChanging function.

        点击一个搜索结果以将回调滚动到视图中。右键点击搜索结果并选择转至会将光标置于回调函数中。

更改回调或断开与回调的连接

        要为组件分配不同回调,请在组件浏览器中选择该组件。然后点击回调选项卡,并从下拉列表中选择不同回调。下拉列表仅显示现有回调。

Callbacks tab for an edit field component in the Component Browser. The ValueChangedFcn drop-down list is expanded, and two existing callback functions are listed.

        要断开与组件共享的回调的连接,请在组件浏览器中选择该组件。然后点击回调选项卡,并从下拉菜单中选择 <没有回调>。选择此选项只会断开回调与组件的连接。它不会从代码中删除函数定义,也不会断开回调与任何其他组件的连接。断开与回调的连接后,可以为组件创建新回调,或使组件保持为不使用回调函数。

删除回调

        如果代码包含一个回调函数,而您的 App 中没有任何组件使用该函数,可以完全删除该函数。右键点击代码浏览器回调选项卡中的回调并从上下文菜单中选择删除,可删除回调。

Callbacks tab of the Code Browser. The context menu associated with the StopButtonPushed callback function has options to delete, rename, insert at cursor, and go to.

示例:具有滑块回调的 App

        以下 App 包含一个在用户移动滑块时跟踪滑块值的仪表。滑块的 ValueChangingFcn 回调从 event 参数中获取滑块的当前值。然后它使仪表指针指向该值。

如图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G_系统同步机制(八)

BBU和RRU的同步机制 为什么要做到系统同步 在TDD模式下工作时&#xff0c;为了避免相邻小区之间的干扰&#xff0c;近距离的所有gNB在任何时间点都必须具有相同的传输方向(DL或UL)。这样做的必要条件是在BTS之间同步SFN (System Frame number)和time Slot。此外&#xff0c;由…

SystemC学习笔记(三) - 查看模块的波形

简述 波形在Simulation/Emulation中地位十分重要&#xff0c;尤其是在研发初期&#xff0c;只能通过波形来查看软件hang住的位置。 对于TLM来说&#xff0c;查看波形一般是指查看pvbus上的transaction&#xff0c;而对于SystemC本身来说&#xff0c;查看波形就是使用Gtkwave或…

决策树的分类

概念 决策树是一种树形结构 树中每个内部节点表示一个特征上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;每个叶子节点代表一种分类结果 决策树的建立过程 1.特征选择&#xff1a;选取有较强分类能力的特征。 2.决策树生成&#xff1a;根据选择的特征生…

《ORANGE’S:一个操作系统的实现》读书笔记(三十五)内存管理(三)

内存管理到目前为止实现了fork()、exit()和wait()&#xff0c;而我们的目标是实现一个可以执行命令的shell&#xff0c;可无论Init进程fork出多少进程&#xff0c;它也都只是Init而已。所以我们还需要一个系统调用&#xff0c;它就是exec()&#xff0c;这篇文章就来记录exec()的…

最长公共前缀(Leetcode14)

例题&#xff1a; 分析&#xff1a; 我们可以先定义两个变量 i &#xff0c; j&#xff0c; j表示数组中的每一个字符串&#xff0c; i 表示每个字符串中的第几个字符。一列一列地进行比较&#xff0c;先比较第一列的字符&#xff0c;若都相同&#xff0c;则 i &#xff0c;继…

成功解决「MySQL问题1」启动mysql时:发生系统错误5拒绝访问

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; ✈️公众号 | 热爱技术的小郑 。文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资…

【数据结构】 顺序表的基本操作 (C语言版)

一、顺序表 1、顺序表的定义&#xff1a; 线性表的顺序存储结构&#xff0c;即将表中的结点按逻辑顺序依次存放在一组地址连续的存储单元里。这种存储方式使得在逻辑结构上相邻的数据元素在物理存储上也是相邻的&#xff0c;可以通过数据元素的物理存储位置来反映其逻辑关系。…

漫漫数学之旅009

文章目录 经典格言数学习题古今评注拓展学习&#xff08;一&#xff09;大数定理&#xff08;二&#xff09;伯努利级数 经典格言 真正的问题&#xff0c;不在于机器是否思考&#xff0c;而在于人们是否思考。——BF斯金纳&#xff08;B. F. Skinner&#xff09; BF斯金纳&…

2024首更---Web Service 教程

Web Services 简介 Web Services 可使您的应用程序成为 Web 应用程序。 Web Services 通过 Web 进行发布、查找和使用。 您应当具备的基础知识 在继续学习之前&#xff0c;您需要对下面的知识有基本的了解&#xff1a; HTMLXML 如果您希望首先学习这些项目&#xff0c;请在…

2024年华数杯国际赛A题:放射性废水处理建模 思路模型代码解析

2024年华数杯国际赛A题&#xff1a;放射性废水处理建模&#xff08;Radioactive Wastewater from Japan&#xff09; 一、问题描述 2011年3月&#xff0c;日本东海岸发生了地震&#xff0c;引发了福岛第一核电站事故&#xff0c;导致三个核反应堆熔毁&#xff0c;并在一场巨大…

[java基础揉碎]基本数据类型转换

介绍 当java程序在进行赋值或者运算时&#xff0c;精度小的类型自动转换为精度大的数据类型&#xff0c; 这个就是自动类型转换。 数据类型按精度&#xff08;容量&#xff09;大小排序为: 自动类型转换注意和细节 1.有多种类型的数据混合运算时&#xff0c;系统首先自动…

如何在浏览器上设置 VPN 网络虚拟专用网络

如何在DT浏览器上设置 VPN 网络 虚拟专用网络&#xff08;VPN&#xff09;是一种用公用网络架设专用网络的技术。如何在DT浏览器上设置 VPN 呢&#xff0c;先下载DT浏览器&#xff0c;建议在官方网站下载最新版&#xff0c;安装&#xff0c;在DT浏览器首页点更多&#xff0c;网…

php基础学习之变量

php使用变量的必要性 PHP 是一种动态网站开发的脚本语言&#xff0c;动态语言特点是交互性&#xff0c;会有数据的传递&#xff0c;而 PHP作为“中间人”&#xff0c;需要进行数据的传递&#xff0c;传递的前提就是 PHP 能自己存储数据(临时存储) php变量的使用 定义&#xf…

HTML以及CSS相关知识总结(一)

近日就开始回顾html和css相关知识啦&#xff0c;并且会学习html5和css3的新知识&#xff0c;以下是我对记忆不太深刻的地方以及新知识点的总结&#xff1a; Web标准&#xff1a; 结构&#xff1a;用于对网页元素进行整理和分类&#xff0c;即HTML 表现&#xff1a;用于设置网页…

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块&#xff0c;http 模块主要用于搭建 HTTP 服务端和客户端&#xff0c;使用 HTTP 服务器或客户端功能必须调用 http 模块&#xff0c;代码如下&#xff1a; var http require(http); 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口)&#x…

Python实现稳健线性回归模型(rlm算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 稳健回归可以用在任何使用最小二乘回归的情况下。在拟合最小二乘回归时&#xff0c;我们可能会发现一些…

python写完程序怎么运行

python有两种运行方式&#xff0c;一种是在python交互式命令行下运行; 另一种是使用文本编辑器直接在命令行上运行。 注&#xff1a;以上两种运行方式均由CPython解释器编译运行。 当然&#xff0c;也可以将python代码写入eclipse中&#xff0c;用JPython解释器运行&#xff0c…

Spring MVC的原理

Spring MVC中的MVC即模型-视图-控制器&#xff0c;该框架围绕一个DispatcherServlet设计而成&#xff0c;DispatcherServlet会把请求分发给各个处理器&#xff0c;并支持可配置的处理器映射和视图渲染等功能。Spring MVC的具体工作流程如下&#xff1a; &#xff08;1&#xff…

微服务不死 — 共享变量在策略引擎项目的落地详解

01 背景 1、共享变量的提出 前段时间&#xff0c;来自亚马逊 Prime Video 团队的一个案例研究在开发者社区中掀起了轩然大波。大体是这样一件事&#xff0c;作为一个流媒体平台&#xff0c;Prime Video每天都会向客户提供成千上万的直播流。为了确保客户无缝接收内容&#xff0…

【动态规划】【数学】【C++算法】805 数组的均值分割

作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及知识点 动态规划 数学 805 数组的均值分割 给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中&#xff0c;使得 A 数组和 B 数组不为空&#xff0c;并且 average(A) average(B)…