02-19-2017 02:30 AM
ノートPC+モニタの2画面環境です。第一画面に表示されたメインViで演算処理を行い、結果を出力するサブViを第二画面に表示させています。
演算の途中、解が得られない場合にダイアログでエラーメッセージを第一画面に表示したいのですが、サブViを実行した影響なのかダイアログが第二画面に出力されてしまいます。
ダイアログを必ずメインViを表示している第一画面に表示させる方法を教えてください。
ダイアログ以外にもエラー発生時に表示されるウィンドウも同様の症状で悩んでおります。
よろしくお願い致します。
解決済! 解決策の投稿を見る。
02-19-2017 06:56 PM
rotowa様
第二画面で表示されているサブViからダイアログを表示すると第二画面に表示されるんだと思います。
エラーダイアログの場合は、VIで作成されているようで
中をずっと見ていくと、vi.lib\Utility\error.llbのDetails Display Dialog.viを使って表示してました。
添付ファイル部分(フロントパネルウインドウのパネル境界を設定)で位置を指定しているようです。
ここの部分を修正するしかないと思います。
例えば、フロントパネルウインドウのパネル境界を設定をやめて、VIプロパティのウインドウランタイムの位置を設定するとか
vi.lib\Utility\error.llbを直接修正すると元々のエラーダイアログの機能が損なわれるので
error.llbをコピーして、必要部分を抽出して修正したほうがいいかも
error.llbにはエラー関連のVIがいろいろ入っているようなので面倒だと思います。
メッセージダイアログは、VIで自作するしか無いと思います。
02-19-2017 08:12 PM
ご回答ありがとうございます。
あくまで第二画面はサブViによる表示のみで、ダイアログは第一画面のメインViから出力しておりますが、
ダイアログウィンドウは第二画面に表示されてしまいます。
直前で第二画面への出力を行っており、アクティブとなっているウィンドウが第二画面のサブViになっているからではないかと考えて色々試しておりますが、うまく行っておりません。
ご回答頂いた内容も参考にさせて頂きもう少しトライしてみます。
02-19-2017 10:44 PM
rotowa様
>直前で第二画面への出力を行っており、アクティブとなっているウィンドウが第二画面のサブViになっているからではないかと考えて色々試しておりますが、うまく行っておりません。
奥が深そうですね! General Error Handler CORE.viでそこら辺を処理していると思われます。
>中をずっと見ていくと、vi.lib\Utility\error.llbのDetails Display Dialog.viを使って表示してました。
>添付ファイル部分(フロントパネルウインドウのパネル境界を設定)で位置を指定しているようです。
>ここの部分を修正するしかないと思います。
コピーして修正は依存関係に注意を!(コピーして修正はやめたほうがいい気がしてきました・・・)
修正する際は、vi.libのVIを修正した経験者にアドバイスを貰ったほうがいい気がしてきました。
経験無しで私からアドバイスは難しいです(ぺこ)
02-19-2017 11:22 PM
rotowa 様
アクティブウィンドウを切り替えるのでしたら、Windows APIを使用するというのは如何でしょうか?
下記のページ右側からダウンロードできるサンプルの中にWINUTIL.LLBというファイルがあり、その中にある「Move Window to Top」VIが含まれています。
Window名を指定することで複数あるウィンドウの中で一番上に移動できると思います。
<Windows API Function Utilities (32-bit) for LabVIEW>
http://www.ni.com/example/29935/en/
02-20-2017 01:35 AM
皆様、ご提案ありがとうございます。
しかし、なかなかうまく行かないです。Windowをアクティブにするコマンドがあればよいのですが・・・
02-20-2017 01:51 AM
皆様、ありがとうございます。解決致しました。
第一画面のメインViからサブViを第二画面に起動した時点でサブViが最前面となり、メインViから出力したダイアログも最前面のサブViに引っ張られ第二画面に出力されるようです。
下記添付画像のようにメインViを最前面にする事で、ダイアログはメインViを表示している第一画面に出力されました。