LabVIEWでプログラムを書くときの強みの一つは、ユーザーインタフェースであるフロントパネルをドラッグアンドドロップの操作だけで簡単に構築することができることだと思います。
本ブログのまずこれのシリーズでは主にプログラムのアルゴリズムの部分の書き方について解説してきましたが、アルゴリズムを知っているだけではプログラムは書けず、どのような選択肢があるかということも知っておく必要があります。
使い方集は、まずこれのシリーズでステートマシンまでの知識はある程度知っている前提で、アルゴリズム以外に関わるプログラムの書き方について紹介するシリーズです。
本記事ではプログラム実行時のショートカットメニューについて紹介しています。
ショートカットメニューのカスタマイズ
LabVIEWを使用したプログラムは、フロントパネルの編集を行うことでそれがそのままユーザーインタフェースとなります。そのため、見た目を整えることはそのままユーザーの使い勝手の良さに直結します。
ただし、制御器や表示器以外にも見た目や機能に関わってくる要素としてウィンドウの表示のさせ方も大切な要素です。
基本的にウィンドウそのものはVIプロパティの設定でどのように表示するかを細かく指定できます。
ではこれで見た目に関する部分のカスタマイズは終わり、というとそうではなく、意外と忘れられがちなのがショートカットメニューバーの編集です。
ショートカットメニューについて特に何も設定しなくても既に項目がいくつも存在しますが、この部分すら自由にカスタマイズして、表示する項目を限定することができます。
また、既存のメニュー内容を限定するだけでなく、新たな機能を持たせることもできます。
例えば、フロントパネルにわざわざボタンを配置するほどでもないけれど機能としては設けたい、そんな内容の処理があったときに、ユーザーがショートカットメニューから選択すれば特定の処理を実行する、といったようなプログラムが書ける、ということです。
例えば以下では、メニューバーからスクリーンショットを取る機能とプログラムを停止する機能を追加しています。この例は後で実装例を紹介しています。
また、ウィンドウに出ているショートカットメニューだけでなく、個々の制御器に対してもショートカットメニューを設定することができます。
以下では、ある特定の数値制御器に対して色を指定したり表示の大きさを指定しています。
どちらもやり方は似ているのですが、ブロックダイアグラムでの扱いの違いも含めそれぞれ紹介していきます。
なお、以下で紹介するのはいわゆるランタイム時に効果を発揮するものです。つまり、プログラムが実行されているときだけカスタマイズした項目が表示されるのであって、普段VIを編集しているときにも変わってしまうといったことはありません。
ウィンドウのメニューバーのカスタマイズ
まずはウィンドウに表示されるメニューバーのカスタマイズです。メニューバーの「編集」から「ランタイムメニュー」を選ぶことでカスタマイズ画面が開きます。
最初、開いたときには「デフォルト」となっていて、現在表示されているメニューバーの項目名がずらりと並んでいる状態だと思います。
これをカスタマイズする場合には「カスタム」を選択します。
カスタマイズの部分でやらなければいけない操作は次の通りです。
- 項目タイプを選ぶ
- (もしユーザ項目を選択した場合)項目名や項目タグ、必要に応じてショートカットキーを設定する
- 追加事項がなくなるまで、項目を増やす
- 編集が終わったらランタイムメニューファイルとして保存する
例えば、デフォルトのメニューにあった「ファイル」の項目はそのまま全部使いたい、という場合には項目タイプで「アプリケーション項目」を選びます。
この中にはデフォルトのメニュー項目が含まれるので、ここから「ファイル」、「すべてのメニュー」と選択します。
すると、自分のカスタマイズしているメニューの中に「ファイル」が加わり、ここにもともとのファイルメニューにあったすべての機能が表示され使えるようになります。
では次に、これまたもともとのメニューにあった「編集」のメニュー項目のうち、「取り消し」、「やり直し」以外の項目がない状態で使用したい、とします。
まずは項目を増やすため青い+マークを押して、アプリケーション項目から編集を選択、いったんすべてのメニューを選択しておきます。
要らないメニューは削除してしまいます。要らない項目をクリックして赤いバツ印を押せば項目は消えるので、目的の項目だけになるまで消していきます。
では次に、デフォルトのメニューにはなかった機能を実装することを考えます。
こういう場合に項目タイプで「ユーザ項目」を使用します。試しに、テスト、という名前で項目を作ってみます。
ただし、前の操作で「一段右」になっている(「やり直し」と同じ階層になっている)場合には、左向き矢印をクリックして、項目の階層を上げておきます(そうしないと今回の場合「テスト」が「編集」の下の項目の一部となります)。
なお、項目名と項目タグという二つがありますが、項目名はメニューバー上で表示される名前であり、項目タグはプログラム上で取得できるその項目に対する名前となります。何も指定しないと項目名=項目タグとなりますが、二つの名前は同じでなければいけないことはありません。
では、今はテストという名前のメニュータブを作っただけなので、この中に「ユーザ操作1」という項目を追加します。後でプログラム上の動作を確認するために、項目タグは「操作1」とでもしておきます。
もう一つ、同じ階層に項目名「ユーザ操作2」で項目タグを「control2」としたものも用意しておきます。
また、ショートカットのところを選択した状態で、適当なショートカットキーを登録しておきます。例えば、ショートカットキーの部分を選択した状態で「F1」を押すと、F1キーが登録されます。
ひとまずこの状態で終わろうと思います。ファイルから「保存」を選択して、今の設定をrtmファイルに保存しておきます。
プログラムでは、ショートカットメニューバーの内容が選択された状態をイベントストラクチャで検出できます。
ここではテスト用にこんな単純なプログラムを用意してみます。
あとは実行して動作を確認します。メニューバーから選ぶか、あるいは「F1」キーを押すことで項目タグの名前が変わることがわかると思います。
実際に特定の動作をさせる際には、この項目タグのイベントノードから得られる文字列とケースストラクチャを組み合わせます。
例えば、冒頭で紹介した、スクリーンショットを取る機能のプログラムであれば以下のように書くことできます。インボークノードの選択肢にある、フロントパネル画像を取得するというメソッドを使用しているだけです。
なお、LabVIEWのサンプルファインダの中にあるサンプルでは、上記のようにプログラム編集時にメニューバーをカスタマイズ(してファイル出力する)ようなやり方ではなく、プログラムの中で動的にメニューバーをカスタマイズする方法を紹介しています。
制御器のショートカットメニュー
続いて制御器に対するショートカットメニューの設定の仕方です。基本的な操作は、上で紹介したウィンドウのショートカットメニューの編集と変わりません。
ただし、制御器に対する操作の場合には、編集し終わってからその編集した内容をファイル出力するか、あるいは今編集していた特定の制御器に紐づけてショートカットメニューの情報を保存することができます。
複数の制御器に対し同じショートカットメニューを適用するのであれば、ファイルへ保存が便利だと思います。
こちらもブロックダイアグラムではイベントケースとして定義しておき、そのメニューが選ばれたら特定のイベントを発生させるということができます。
なお、制御器に対するショートカットメニューの選択を検出するイベントは、制御器毎に用意されています。
冒頭で紹介した、色を変えたり大きさを変えるプログラムの例を紹介します。
ショートカットメニューの編集時にはこんな感じでメニューを用意しておきます。
これに対して、プログラム上でケースストラクチャを以下のように用意します。
本記事では、ショートカットメニューの編集について紹介しました。小規模のプログラムを作るだけであれば、正直そこまでショートカットメニューの使い勝手が気になる場面はなかなかないと思いますが、フロントパネルの操作にするまでもない、けれどあったら便利、という機能を実行させるのには便利なので、大まかに編集の仕方を覚えておくだけでも役に立つことがあると思います。
ここまで読んでいただきありがとうございました。
コメント