LabVIEW论坛
直播中

荣琪

9年用户 689经验值
擅长:可编程逻辑 测量仪表 嵌入式技术
私信 关注
[文章]

荣小菜补钙记第37期:LabVIEW菜单没图标、字太小还不好看怎么办?那就用簇做一个吧!(END)

荣小菜补钙记第37期:labview菜单没图标、字太小还不好看怎么办?
那就用簇做一个吧!(END)
同步更新于 WeChat:荣小菜在补钙
大家好,我是荣小菜,也可以叫我Richie,本期接着上一期继续讲用簇制作菜单。
1.     简介
上一期讲解了Menu Core vi,可以看到Menu Core只能控制一个簇,而我们的模拟菜单是多个簇的组合(如下图所示)。虽然是多个簇,但它们的逻辑相同,因此有几个簇就调用几次Menu Core就可以了。
一级Item效果.gif

                              
2.     顶层Vi:Run
想要同时多次调用Menu Core,使用异步调用是比较好的方法,我们需要写一个Run vi,代码如下。比较简单,注意一下打开Vi引用的0x80的意思就行了,其它就不多做讲述了。
Run 后面板.JPG
Run Vi后面板
3.     使用方法1:一级菜单
代码基本上讲完了,下面就看怎么使用了,若是只有一级菜单,如下图所示,那么只要将这几个簇的引用创建数组传递至Init vi里即可。
一级Item效果.gif
1级菜单效果图
4.     使用方法2:多级菜单
若是需要多级菜单,那么会稍微复杂一下,但是核心代码是不变的,变的只是“簇的嵌套组合”。
2级Item效果.gif
2级菜单效果图
先举例2级菜单的使用方法。对于2级菜单,我们使用簇嵌套的方式,如下图所示,Cluster9为主簇,Cluster10和11分别嵌套进主簇中,并按菜单的样子摆放整齐。最后在代码中将Cluster9,10,11全部创建引用并组合成数组即可。
2级菜单嵌套方法.JPG
2级菜单嵌套方法
2级菜单后面板.JPG
2级菜单后面板
再看3级菜单,也是同样的方法,只需要修改嵌套组合的方式,让Cluster13包含Cluster14,Cluster14包含Cluster15,最后将其整齐的排列好即可。至于代码则完全类似。以此类推,我们的多级菜单就完成了。
3级Item效果.gif
3级菜单效果图
3级菜单嵌套方法.JPG
3级菜单嵌套方法
5.     多级菜单时返回值错误
上一期我们留了一个伏笔没有介绍,其实这里的代码主要是为了处理多级菜单出现的返回值错误问题,我们按照簇嵌套组合的方式设计多级菜单,可以预见,按照如下代码运行时,当按下嵌套簇的首控件时,对于嵌套簇(Cluster10),我们是按下了它的首控件,但是对于主簇(Cluster9),我们按下的是嵌套簇,因此它会返回嵌套簇的名称,这样就会产生名称冲突。返回嵌套簇的名称我们是不需要的,因此我们在Menu Core里使用“转换为特定类”来滤除簇被按下的效果,只有检测的是非簇控件被按下才返回其名称。
伏笔解释.JPG
多级菜单返回值处理
6.     调试方法
最后介绍一下调试方法,我们预留了“Set Menu Init State(Debug)”属性,若该属性设为T,则启动后可以将簇的各级控件全部显示出来,方便我们修改和调整簇内容和位置。
调试方法.gif
调试方法
7.     总结
用簇做菜单的方法本期就全部介绍完毕啦,这种方式全程采用普通控件,控件有多丰富,菜单就有多好看。此外,通过簇的嵌套组合也完全可以实现多级菜单。此外,这种方式更加简单,比起XControl容易调试也更容易理解。
源代码(含多级菜单演示):
Cluster Menu(含多级菜单).rar (152.95 KB)
(下载次数: 220, 2021-6-14 09:16 上传)
欢迎大家多多分享,共同进步^_^

回帖(24)

yao

2021-6-15 09:15:49
学习一下,学习一下,
举报

lixiangbing1991

2021-6-15 09:32:13

学习一下,学习一下,
举报

程子

2021-6-17 08:07:28
看起来很是不错,点歌赞!
举报

huaj123

2021-6-17 13:55:04
学习学习,,,,,
举报

更多回帖

发帖
×
20
完善资料,
赚取积分