LabVIEWでプログラムを書くときの強みの一つは、ユーザーインタフェースであるフロントパネルをドラッグアンドドロップの操作だけで簡単に構築することができることだと思います。
本ブログのまずこれのシリーズでは主にプログラムのアルゴリズムの部分の書き方について解説してきましたが、アルゴリズムを知っているだけではプログラムは書けず、どのような選択肢があるかということも知っておく必要があります。
今回はタブ制御器の使い方について扱います。
タブ制御器の種類
タブ制御器は、フロントパネルの場所の節約に便利です。
プログラム操作時のユーザーインタフェースとなるフロントパネルは、どれだけ大きくてもPCの画面を超えて表示することは当然できないわけですが、プログラムによっては表示したい制御器や表示器はたくさんあると思います。
一度にすべてを表示させるわけではないにせよ、何らかの方法でどの制御器、表示器も表示できるようにしたい、そんなときに役立つ選択肢となるのがタブ制御器です。
不思議な(?)ことに、タブ制御器はシルバーのデザインのみ存在しませんが、他のスタイルでは使用することができ、使い方はどれも同じです。プログラム全体の雰囲気に合わせて選ぶことになります。
タブ制御器の基本的な使い方
タブ制御器の基本的な構成の仕方については、実はサンプルがありこれを見ることで一通り確認することができます。
このサンプルで紹介されていないところでいくつかトピックを上げます。
タブの位置
タブの位置を変更することができます。デフォルトの位置は上になっていますが、これは自由に変更可能です。ただし、なぜかシステムタブは変更することができません。
プログラム的に変更することも可能で、タブ位置プロパティにTopやLeftなどを書き込むだけです。ただしこの方法でもシステムタブに対しては、プログラム自体は書けるのですが変更できません(エラーが起きます)。
タブの幅
タブの幅を変更することができます。タブに表示した文字の長さでそれぞれのタブの幅が変わるのもあれば、タブ制御器自身の横幅と同じになるように各タブの大きさが調整されるなどの違いになります。
テキスト以外の表示
通常タブ部分には「タブ1」や「タブ2」といったテキストが入りますが、この部分に画像だけあるいは画像とテキストを表示させることもできます。
ただし画像の選択、貼付けについてはプログラム的にできず、プログラム編集時にしか行えない操作です。また画像のサイズにも注意が必要になります。
タブを表示しないタブ制御器
冒頭で紹介したように、タブ制御器は有限な大きさであるフロントパネルの場所の節約に便利です。
が、場合によってはタブの部分を表示させたくない場合もあると思います。つまり、ページ更新の機能だけもたせて、タブの行き来はブールのボタンを用いることとして、タブそのものは表示しないというデザインにすることができます。
試しにタブが3つ、つまり表示を切り替えたいページが3つある場合についてプログラムをどのように組むかを紹介します。
まずはなにはともあれフロントパネルにタブ制御器を用意し、ページを追加します。
次に各タブの中身を用意します。
そして、ページを切り替えるためのボタン(とプログラムを止めるためのボタン)を用意します。
あとはブロックダイアグラムで以下のように組みます。下側にあるWhileループの中身は適当で、実際には適切な機能を盛り込みます。また、タブはフロントパネル上に置いたときには制御器扱いになっていますが、ブロックダイアグラム上では右クリックして表示器に変更としています。
下のWhileループを止めるための措置として、上のWhileループが止まってから「プログラム終了」というブールがTRUEになることを利用しています(このブール表示器はフロントパネルにありますが、ウィンドウのサイズを調整して見えないようにしています)
この部分はローカル変数を使用しない組み方もできますが、そこの実装は今回の本質とは関係ないのでこのような簡易な形の実装としています。
また、上側のWhileループにあるシフトレジスタは初期化されていますが、ここはI32のデータタイプになっています。符号なし整数にすると意図したとおりにプログラムが動かないことがあるので注意します。
これで、フロントパネル上のボタンを押すことで画面が切り替わるプログラムが作れました。
なお、次へなどのボタンをタブ制御器の中に入れると、そのページのみで表示されてしまうようになります。
これを避けるには、ボタンを表示する分のスペースを確保したうえで、いったんタブの外側にボタンを置いておき、キーボードの矢印キーでボタンをタブの上に移動させます。こうすることであたかもすべてのタブページに同じボタンが表示されているように見せることができます。
タブ制御器を使用して各タブページに関連する制御器や表示器をまとめておくことで画面を見やすくする以外に単純に画面の節約のために使用するといった使い方があると思います。
後者の使い方の場合にはタブ部分すら必要ないこともあるかと思い、そんなときにはどうするか具体的なプログラム例を紹介しましたので参考になればうれしいです。
ここまで読んでいただきありがとうございました。
コメント