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