この記事で扱っていること
- 文字列制御器に入力する文字列の例を表示させる方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
なにかユーザーに文字を入力してもらう欄に、「例えばこんな文字を入力してね」という例を薄く表示されているという状態を見たことがあると思います。
これをLabVIEWのフロントパネルに置いた文字列制御器で実装することを考えます。
一つのやり方としては、その制御器にデフォルト値として値を設定しておくことが考えられます。
ただし、制御器にデフォルト値を設定した場合には、実際にプログラムを実行してその文字列制御器を触る際に、そのデフォルト値が既に入力された状態となっているので、その値を消す必要があります。
まぁ全体を選択してDeleteするだけなので大した負担ではないですが、そうではなく、ユーザーが入力するまでは表示が出ていて、入力しようと文字列制御器をクリックしたらその表示が消えるような仕組みを設けることもできます。
本記事ではその仕組みの実装例を紹介しています。
どんな結果になるか
フロントパネルに文字列制御器を置いています。今回はこの機能の例を紹介するだけなので他には停止ボタンしか置いていません。
プログラムを実行すると、入力例が表示されます。
あとはこの入力例が表示された文字列制御器をクリックすると、グレーで表示されていた例が消えて、さらに文字を具体的に入力した際には黒文字で表示させることができます。
また、もし再び文字列の部分を空にした状態でキーフォーカスを文字列制御器から外すと、再び入力例を表示させることができます。
プログラムの構造
イベントごとに微妙に行う操作が違うものの、一つ、専用のサブVIを設けるだけで対応することができます。
イベントは、文字列制御器に対して値変更のみならず、マウスダウンやマウス境界外なども使用します。
サブVIへ入力している文字列は、入力例として表示させたい文字列です。
また、ブールも入力していますが、これは「この操作を行った際に文字列制御器が空文字になっているかどうか」を指定しています。
サブVIの中身は以下のようになっています。メインVIのフロントパネル上の文字列制御器の状態によってサブVIの挙動を変えるようにしています。
数値を扱う場合
今回の、入力する文字列例を指定する方法、他の制御器には全く同じ形での応用が利きにくいです。
他の、といっても、ブールデータでこのようなことはやらないと思うのでやるとしたら数値データですが、数値データは「空文字」のような状態がない(数値データとしてのデフォルト値は0ですが、これは0という数字が入っているので「空」ではない)ため、同じアプローチがとれません。
一つの方法としては、文字列制御器に数値を入力させる、という前提として、入力してほしい数値を決めるやり方です。
ただしこの場合、本来文字列制御器には数値以外の文字も当然入力できてしまうので、この文字列制御器に入力されたのが数値として解釈できるものだけであって文字が入っていないということは別途確認する仕組みを設けることになります。
もっと便利なやり方はあるように思いますが、例えば以下のようなプログラムであれば、数値以外の「文字」が入ったときに警告を出すようにすることができます。
(パターンで一致では複数数値を認識するために[0-9]+という表現ができますが、これだと小数点を認識することができません。小数点は「.」ですが、これ自体は数字ではないので、このドットのみ例外的に文字として認識させています)
本記事では、入力する文字列の例を表示させた文字列制御器の用意の仕方について紹介しました。
動作としては比較的単純なこと、ですが、元々の機能としてないために、プログラム的にこの機能を実現しようとすると複数のイベントを用意することになり多少煩雑になりますが、プログラムの中で文字をユーザーに入力させる機会は多いと思うので、必要そうなところのみへの実装時にも役に立てばうれしいです。
ここまで読んでいただきありがとうございました。
コメント