NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

マルチモニタにおけるメッセージダイアログ表示位置を指定したい

解決済み
解決策を見る

ノートPC+モニタの2画面環境です。第一画面に表示されたメインViで演算処理を行い、結果を出力するサブViを第二画面に表示させています。

演算の途中、解が得られない場合にダイアログでエラーメッセージを第一画面に表示したいのですが、サブViを実行した影響なのかダイアログが第二画面に出力されてしまいます。

ダイアログを必ずメインViを表示している第一画面に表示させる方法を教えてください。

ダイアログ以外にもエラー発生時に表示されるウィンドウも同様の症状で悩んでおります。

よろしくお願い致します。

 

 

0 件の賞賛
メッセージ1/7
7,121件の閲覧回数

rotowa様

 

第二画面で表示されているサブViからダイアログを表示すると第二画面に表示されるんだと思います。

 

エラーダイアログの場合は、VIで作成されているようで
中をずっと見ていくと、vi.lib\Utility\error.llbのDetails Display Dialog.viを使って表示してました。
添付ファイル部分(フロントパネルウインドウのパネル境界を設定)で位置を指定しているようです。

ここの部分を修正するしかないと思います。

 

例えば、フロントパネルウインドウのパネル境界を設定をやめて、VIプロパティのウインドウランタイムの位置を設定するとか

vi.lib\Utility\error.llbを直接修正すると元々のエラーダイアログの機能が損なわれるので
error.llbをコピーして、必要部分を抽出して修正したほうがいいかも
error.llbにはエラー関連のVIがいろいろ入っているようなので面倒だと思います。

 

メッセージダイアログは、VIで自作するしか無いと思います。

 

0 件の賞賛
メッセージ2/7
7,069件の閲覧回数

ご回答ありがとうございます。

 

あくまで第二画面はサブViによる表示のみで、ダイアログは第一画面のメインViから出力しておりますが、

ダイアログウィンドウは第二画面に表示されてしまいます。

直前で第二画面への出力を行っており、アクティブとなっているウィンドウが第二画面のサブViになっているからではないかと考えて色々試しておりますが、うまく行っておりません。

 

ご回答頂いた内容も参考にさせて頂きもう少しトライしてみます。

0 件の賞賛
メッセージ3/7
7,060件の閲覧回数

rotowa様

 

>直前で第二画面への出力を行っており、アクティブとなっているウィンドウが第二画面のサブViになっているからではないかと考えて色々試しておりますが、うまく行っておりません。

奥が深そうですね! General Error Handler CORE.viでそこら辺を処理していると思われます。

 

>中をずっと見ていくと、vi.lib\Utility\error.llbのDetails Display Dialog.viを使って表示してました。
>添付ファイル部分(フロントパネルウインドウのパネル境界を設定)で位置を指定しているようです。
>ここの部分を修正するしかないと思います。

コピーして修正は依存関係に注意を!(コピーして修正はやめたほうがいい気がしてきました・・・)
修正する際は、vi.libのVIを修正した経験者にアドバイスを貰ったほうがいい気がしてきました。
経験無しで私からアドバイスは難しいです(ぺこ)

0 件の賞賛
メッセージ4/7
7,046件の閲覧回数

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/

 

0 件の賞賛
メッセージ5/7
7,044件の閲覧回数

皆様、ご提案ありがとうございます。

 

しかし、なかなかうまく行かないです。Windowをアクティブにするコマンドがあればよいのですが・・・

0 件の賞賛
メッセージ6/7
7,040件の閲覧回数
解決策
トピック作成者rotowaが受理

皆様、ありがとうございます。解決致しました。

第一画面のメインViからサブViを第二画面に起動した時点でサブViが最前面となり、メインViから出力したダイアログも最前面のサブViに引っ張られ第二画面に出力されるようです。

下記添付画像のようにメインViを最前面にする事で、ダイアログはメインViを表示している第一画面に出力されました。

 

メッセージ7/7
7,039件の閲覧回数