サブVIをアイコンから探す

Tips

スポンサーリンク

この記事で扱っていること

  • サブVIをアイコンから探す方法

を紹介しています。

注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。

LabVIEWである程度大きなプログラムを作る場合には複数のサブVIを使用している場合がほとんどだと思います。

サブVIにはわかりやすい名前を付けておくのが基本だと思いますが、アイコンを作り込んでいてその見た目からサブVIを検索するという場合を想定し、選んだVIのアイコンを素早く見られるようにしました。

いちいちサブVIを開いてアイコンを見るよりも圧倒的に楽になります。

スポンサーリンク

どんな結果になるか

プログラムでは、検索対象としたいサブVIがまとまっているフォルダのパスを指定し、検索ボタンを押すことでそのフォルダの中のファイル名を「サブプログラム」とラベルの付いたリストボックス制御器に表示しています。

リストボックスの項目をクリックすると、そのVIのアイコンがピクチャボックスに表示されます。

プログラムの構造

各操作に対してイベントを設定しました。そのためイベントストラクチャを使用しています。

各イベントは以下のようです。

まずは検索ボタンに対する値変更イベントとして以下の図のようなプログラムを書いています。フォルダパスをフォルダをリスト関数に入力し、この出力とフォルダパスの情報をパス作成を使って合わせています。この情報を次のイベントで使用します。

なお、サブプログラムを表示するリストボックス制御器が、このプログラム開始後すぐに触れられないように無効プロパティを設定したりしていますが、この部分は別に必須ではありません。

次にリストボックス制御器の値変更イベントです。前のイベントでそれぞれのサブVIのファイルパスの配列を取得しているので、その配列の何番目かという要素番号をリストボックス制御器の端子から取得、指標配列で抽出しています。

あとはこのVIパスを使ってリファレンスを開き、VIアイコンを画像データとして取得するインボークノードと、ピクチャ&サウンドの関数パレットにある平坦化ピックスマップ描画関数でピクチャに出力しています。

ピクチャに表示する際の大きさは、ズーム倍率のプロパティノードで調整できます(以下の図では2.5倍としています)。

最後に終了ボタンを押した際のイベントです。これは単にWhileループの条件端子にTRUEを配線しているだけです。

フォルダにVI以外が入っている場合

上で紹介したプログラム、実はフォルダにVI以外が入っていてそれを選択してしまうと、それ以降正しく機能しません。VI以外を選択してもVIリファレンスを開こうとし、この時点でエラーが発生してしまうため、以降のすべての関数はエラー入力により実行されないためです。

これを防ぐ一番手っ取り早い方法は、以下のようにリファレンスを開く(閉じる)部分だけエラー配線を独立させ、リファレンスを閉じるの後のエラー配線をやめてしまうことです。こうすれば、リファレンス操作の関数でエラーが起きたとしてもそのエラー情報は後の操作に影響しなくなるためです(自動エラー処理を無効にしている前提です)。

VIを開きたい場合

せっかく検索してVIを見つけたら、それを開きたくなるかもしれません。Windowsのエクスプローラで該当サブVIを改めて探して開いてもいいのですが、どうせならそのまま同じプログラムを使用して開けたほうが便利です。

リストボックス制御器のイベントで「ダブルクリック」があるので、これをイベントとして追加して定義することで実現できます。開くにはインボークノードでフロントパネルを開くのメソッドを指定します。

VIのアイコンを素早く表示し検索しやすくするプログラムについて紹介しました。サブVIのアイコンを作り込むことで、メインVIで使用する際に分かりやすくなるだけでなく、こうした見た目の手がかりで求めるプログラムを探しやすくなったりするので、やはりサブVIをたくさん使う様な場合にはそれぞれ区別できるようにアイコンを編集することは大切ですね。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました