この記事で扱っていること
- カスタマイズしたダイアログを作る方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
プログラムを作る際、特定の操作に対して警告を出したり、別のウィンドウで選択肢を出すような機能を設けることはよくあります。いわゆるダイアログを出す、ということですね。
LabVIEWでは、ダイアログを表示するそのものずばりの関数はあるのですが、この関数を実行してもまさに表示するだけであり、思ったような見た目や機能を持った表示にするためのカスタマイズができません。
そこで、もう少し見た目や機能にこだわったダイアログ画面を作ることを前提に、必要そうな知識をまとめてみました。
どんな結果になるか
プログラムを実行して、ダイアログを表示するためのボタンを押すと、下の図のようなダイアログを表示させます。
ダイアログの右上のバツボタンを押すと、選択肢のボタンから選択してくださいという警告を出します。
こういった機能を持ったダイアグラム画面を作るにあたって、その他覚えておくと便利そうな内容も含め以下で紹介します。
プログラムの構造
ここでは、ダイアログを表示するにあたって知っておいた方が便利な機能を紹介していきます。
ダイアログ表示っぽいサブVIを作成する
まず何はともあれダイアログそのものを用意する必要があります。これはサブVIになっています。
フロントパネルには、ユーザーに押してほしいボタン以外に、そのボタンが押された結果を表示する表示器を置いて、これをコネクタペーンに設定しメインVIに「サブVIの実行結果」として返しています。
表示器はプログラム実行時に表示させておく必要がないので、ウィンドウのサイズを調整して、表示器が隠れるようにしておきます。
ただ、普通のサブVIとして使用するだけだとそのVIのフロントパネルは画面に表示されません。そこで、VIプロパティを編集してフロントパネルが表示されるようにカスタマイズします。
ウィンドウの外観を整える
VIプロパティではフロントパネルを表示させる以外の設定も行え、不必要な表示は消すことができます。
また、ウィンドウに特定のテキストを表示させたい場合にもVIプロパティを編集します。
表示させる画面の背景を変える
ダイアグラムをメインのプログラムと区別させるために、背景色を変えたいという場合にはフロントパネルの左下(水平スクロールバーと垂直スクロールバーの交わる、隅の部分)で右クリックしてプロパティを選択し、背景を変更することができます。
表示位置を変更する
ダイアログ画面はたいていの場合画面に対して上下左右中央の位置に表示することが多いと思います。でも場合によっては画面の左右に対しては中央でも画面上部に表示したいこともあると思います。
これもVIプロパティで解決できます。
ダイアログウィンドウを消そうとしたときに警告を出す
サブVIは実体はただのVIなので右上のバツボタンで消すことができてしまいます。ユーザーが間違って消してしまうことを防いだり、表示された選択肢から選んでもらうように促すためには、二つの方法があります。
実装が簡単なのはバツボタンをそもそも押せないようにすることです。これまたVIプロパティで設定できます。ただし、本当に押せなくなるだけである意味「融通」が利きません。
もう一つはバツボタンが押されたことを「無かったこと」にする方法です。この機能はイベントストラクチャで実現できます。こちらは、プログラム的に特定のメッセージを表示させたりすることができるのでよりカスタマイズ感があります。
なお、このようにイベントストラクチャを使用する場合には、イベントストラクチャを入れているWhileループを止めてサブVIを抜けることになるため、ユーザーに押してもらいたいボタンが押されたことでループが止まるようにします。
操作を促すために強調する
上で紹介した、バツボタンを押した時の動作に絡めてもいいと思いますが、操作を促すためにボタン部分を強調させるような仕組みを設けることができます。
例えば、一定時間操作がない場合にボタンをパパパパッと表示/非表示を切り替えることで点滅するように見せ、個々のボタンを押してくださいねと暗に促すような感じです。
表示させているテキストを変化させる
もし同じ形式のダイアログを少し文面を変えて使いまわす場合には、表示するテキストを変えることもできます。
文字列表示器を配置して、背景色などを見えなくさせることもできますが、ラベルにテキストを表示させている場合には以下のようなプログラムを組むことができます。
あとは、メインVIから、表示させたいテキストを渡します。
バツボタンが押されたらテキストを変える、といったこともこの方法で実装できると思います。
基本的にダイアグラムの表示はプログラムのメインとなる部分ではないので、これを作り込むのに時間をかけるのはもったいないと思います。ただ、機能や設定として実現できるのに、やり方を知らないことで時間を無駄に費やしてしまったりその実装をあきらめるということが減ればと思い、まとめてみました。参考になるとうれしいです。
ここまで読んでいただきありがとうございました。
コメント