LabVIEWwilliam hill官网
直播中

惜宇

9年用户 68经验值
擅长:镀膜
私信 关注
[问答]

labview对话框

大伙好:
       我想问一下labview有没有这样的对话框,我的父VI调用对话框以后不需要等待对话框结束依然可以运行我的父VI。也就是一个提示框的功能。如果采用引用的方式来用的话比较麻烦如下图。大伙有没有比较简单的方案?

QQ截图20190107124503.png

回帖(2)

xxx

2019-1-7 12:46:10

最佳答案

这个问题我以前先想了很久,有三种实现方法。
①把这个系统对话框,放在另一个线程里,那么你的主线程不会停住
②异步调用对话框vi
③你说的这个调用方法
那么最后我是用1来做的,因为其他两个蛋疼一点,你自己做的对话框vi,难看到爆炸。而且如何文本框居中,如何自动调节对话框宽度、高度,都很难做。看起来简单的系统对话框,背后的东西复杂得很,很难实现。
但是这个也有解决办法,系统vi里有一个“3按钮对话框”,这个是开源的,你可以把这个另存一下,然后在这个基础上改成你想要的vi。(这里我当时一直想找到这个“单对话框vi”的开源内容,找不到,不知道有没有大神知道)
回归主线,对话框是否覆盖,是否需要卡住线程,深入之后确实有很多讲究。有些对话框比较重要,一定要覆盖其他的对话框。有的虽然是“单按钮对话框”(单按钮与双按钮的区别,一个只是提示,一个需要卡住等待回复),也最好要让用户钮看清楚看明白了之后,才能继续后续操作。这些情况都会有的,对话框的合理运用,其实很难。
我自己也没有十分完美的解决方案,想给对话框一个分级思路(低级不能覆盖高级),但是很折腾就放弃了。后来觉得有些地方卡在那也没关系,因为对话框显示的时候,本来就无法进行其他鼠标操作,发生冲突的概率并不高,但是在main线程里,这种冲突还是经常有的,可以复现的,我想提问题的兄弟也是遇到了这种问题。因此,我有一个自己的约定,主要vi的main线程里,不放置“单按钮对话框”,除非是上文讲的,需要用户看清楚了再操作的情况,如果需要展示对话框,就用另一个线程展示出来,这个线程里的对话框,无法自我覆盖(消息队列框架,如果我的框架你完全不清楚,那我说的就当废话了)。那么这样可以解决大部分问题了,另外有个技巧,在其他线程里,如果有的提示十分重要,那么就是用系统对话框,保证可以覆盖当前对话框。
大概就是这么多,写得很杂乱,也是我自己边写边思考,欢迎讨论
4 举报
  • 惜宇: 方法1我也试过,比较麻烦。因为很多情况是在主线程产生的提示。例如在通讯的主线程里面产生报错,然后再另外一个线程里面来弹框报错这个也比较恶心。我也不能再主线程里面弹框,万一当时无人的话就卡在这儿了。要在其他线程去报错就感觉比较麻烦。如果用文本框显示的话也没有提示框明显。
    现在就是想执行以下有没有想VB一样的msgbox一样的东西,不会中断我的进程
  • xxx 回复 惜宇: 满足要求的系统对话框目前没找不到,坐等锐哥大神回复,可能其他的包里会有这个系统函数。
    我这个不麻烦啊兄弟,,就是单独有一个消息队列循环,专门用来弹出对话框,你要弹什么内容,发到这个循环,让它弹出就好了。调用循环不会卡住。
  • xxx 回复 惜宇: 最后一句话没说清楚,额外说一遍。“调用方线程(循环)不会卡住。”
  • 惜宇 回复 xxx: 明白了,多谢大兄弟。虽然线会拉的老长老长的但终归是比较好的解决方案。

李麒铭

2019-1-7 13:51:31
以前倒是做过一个subvi message box使得父vi停止运行的
举报

更多回帖

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