【喂饭】MVA-S03 Labview MVA框架实例 重写事件过滤器 文件树
【喂饭】MVA-S03 Labview MVA框架实例 重写事件过滤器 文件树
导语: MVA-S02中,我们实现状态栏的更新,数据持续采集Model与状态机Model的编写方法。本章将继续在S02的继承上,进行文件树的编写,讲解事件过滤器的重写以及ViewManager的嵌套。本系列文章采用MVA-SXX编号,可顺序查看。 为什么要重写事件过滤器,我们在注册树的快捷菜单时,发现重写结束注册快捷菜单事件vi并无法编辑快捷菜单内容!本文将会讲解为什么以及如何解决。
📑 文章目录
🔹 1. 创建FileTree_Viewable,Config_ViewManager,实现文件树的显示 🔹 2. 注册Tree的快捷方式激活?重写事件过滤器,实现快捷菜单激活 🔹 3. 实现菜单的打开与新建功能 🔹 4. 入门总结
1. 创建FileTree_Viewable,Config_ViewManager,实现文件树的显示
1.1 打开自己写的MVA-S02MVA子面板切换项目,也可以公众号发送[MVA]获取。

1.2 我们先来创建FileTree_Viewable,此viewable用来加载文件目录下的文件,右击文件实现创建文件夹,创建文件,打开文件。这是我们Labview中经常要用,复用高的界面。

1.3 重写actor core,界面上放置好看的树,设置自动匹配窗格

1.4 将树的引用与文件地址 名称 放置到私有数据中。新建静态FileTree init.vi,实现用来加载文件目录下的文件显示到树中。


二级的文件目录索引

重写插入子面板,将刚刚写的初始化放入,当插入前面板时执行。

1.5 我们新建一个ViewManager,功能是读取配置文件,就叫Config_ViewMangaer,重写Actor Core,进行界面设计。左侧是子面板,右侧是多列表,底部是保存按钮,使用窗格隔开。


1.6 重写初始化前面板

1.7 修改上下双子面板ViewManager,增加文件树按钮,注册值改变事件,值改变事件不需要修改,报错值更新,由Main_Viewmodel进行数据发布


1.7 进行Launcher的编写,复制之前的进行修改

首先通过ViewManger的配置,将Filetree进行组合

然后将Config_ViewManager作为View加载静默启动中,最后加载到上下双子面版_ViewManager中。ViewManager也是View,是很好的面板组合器,我们要多合理使用ViewManager与View实现多种页面形式。
需要将FileTree的路径和名称写入最后完整的启动器

运行

2. 注册Tree的快捷方式激活?重写事件过滤器
2.1进行快捷方式激活?事件注册


2.2 重写接受快捷菜单激活?


2.3此处确实拿到了菜单的引用,并且可以进行菜单设置,我们运行程序,看看是否有作用

2.4我们发现并不生效,打开调试,进行探针查看


事件是正常触发的。
2.5代码解析(不必理解,看不懂的过一下,知道有这个东西)
打开事件处理部分

当树触发快捷菜单激活是,进行进行打包数据,打包数据发送之前,会根据Event Filter的类型,工厂模式获取Event Filter的数据

而快捷菜单的设置必须要在是否放弃之前完成,也就是说再发送过来之后再设置已经为时已晚了

2.6我们需要重写Event Filter类中的过滤快捷菜单激活事件来实现快捷菜单。
我们新建Event Filter 库,进行普通的类Event Filter,右击属性继承IeventFilyer.lvclass

2.7 右击Event Filter,选择重写Filter Shortcut Menu Activation Event.vi


私有数据里放入菜单项,生成写入读取vi,进行重写。

2.8 回到Actor Core处,注册菜单激活的地方,需要将刚刚重写的Event Filter使用起来,需要使用这个打开事件过滤器引用。


2.9 移除之前重写的接受菜单激活事件,已经不需要了。然后运行。

3. 实现菜单的打开与新建功能
3.1 注册树按下事件与快捷菜单用户选择事件。

3.2 当按到选择框进行选择框切换

3.3 当选择打开,将当前选择的文件路径发送值更新,Main_ViewMode到文件File_Model(还没有创建现在)

3.4 创建File_Model,接受到文件路径之后,进行打开发布数据即可


3.5 Config_ViewManager进行订阅,观察数据之后显示到列表中。


3.6 进行Launcher编写,加入刚刚编写的File_Model,运行

3.7 新建的功能此处不赘述,不是本文重点,但功能已经实现,源码自己查看。
4. 入门总结
很多人觉得MVA比较难,资料少。不必强求,适合自己的就是最好的。但是如果你是想学面对对象编程,想知道Actor封装的妙处,MVA是一个顶级的框架,甚至很多时候我觉得封装的有点多了。真心想学的人,进行该系列的文章手把手自己写,边看边写。慢慢用到自己的项目上来。用熟练了之后,再去看实现方式,然后想如果自己想实现这样的功能可以怎么做?
📢 获取方式: 关注微信公众号:「G 代码思维」,在后台发送暗号: 【MVA】 ,即可原版源码。
点个【赞】和【推荐】 ,咱们下期见!
试读已结束,解锁完整内容与工程源码
本文包含 LabVIEW MVA 框架完整实战源码包、架构逻辑导图与核心技术细节。升级会员即可解锁全站 VIP 专栏!
觉得文章不错?点个赞支持一下博主吧!


💬 极客讨论区 (0)
欢迎发表技术见解、解耦思路或留言交流
还没有人发表评论,快来抢占沙发吧!