03-03-2015 05:46 AM
皆様、こんにちは。
XControlで新たな問題が発生しました。
以前教えて頂いたやり方で垂直スライダー、水平スライダー、ケージ、タンクの4種類の表示器を組み合わせてXControlを作成し、
表示器の種類を自由に変更できるようになりました。
ここで、XControlを構成する4種類の表示器はいずれもスケールの最大値や最小値、反転などのプロパティを持っていたので、そ
れらから派生した形になるXControlでも元々備えていたプロパティ・ノードが自由に使えるものだと思っていました。
ところが、実際にパネルに配置したXControlを右クリックしてコンテキストメニューから作成 → プロパティノード → スケール
→ 範囲 → 最大値でスケール最大値のプロパティノードを作成しようとしたところ、作成 → プロパティノードで表示される候補
にスケールがなく、スケールの最大値を設定することができません。
XControlを使用したとき、オリジナルの表示器が備えていたプロパティにアクセスするにはどうすればいいのでしょうか。
やりたいことは、表示器の
・スケール最大値
・スケール最小値
・スケール反転
を自由かつ動的に設定したいということです。
LabVIEW 2014のXControlのサンプルの温度計の例で結構ですので、上記3点を実現する方法をご教示いただけないでしょうか。
以上、よろしくお願い致します。
解決済! 解決策の投稿を見る。
03-05-2015 12:37 PM - 編集済み 03-05-2015 12:44 PM
プロジェクトツリーから、開発中のXControlを右クリックして、プロパティを選択すると、プロパティノードで実行されるコードを実装できます。
そのときプロパティの名前を決める必要があり、その名前が、右クリック→作成→プロパティのリストから選べるようになります。
つまり、XControl用のプロパティノードはご自身で全部実装する必要が出てきます。
自作のプロパティノードの実装では、クラスタに最大値を設定します。その後は、自動的にステートマシンが呼び出されますのでそこでネイティブのプロパティノードを呼び出して最大値を更新すればよいと思います。
追加:
もうひとつの方法としてXControlで使用されている制御器のリファレンスを自作のプロパティノードで公開することです。これをするには、ステートマシンの初期化時点で、制御器のレファレンスをクラスタに格納します。リファレスンスのプロパティアクセスVIを作成して、その出力としてリファレンスをバンドル解除すればよいです。ただし、これはXControlのユーザに自由度を与えすぎてしまいカプセル化を壊してしまいますのでお勧めできません。
03-05-2015 09:37 PM
サンプルです。
03-06-2015 02:32 AM
TailOfGonさま
ご説明およびサンプル、ありがとうございました。
現在、他の作業に忙殺されておりますので、実際の実装は来週以降になるかと思われます。
そのときに、お礼なり、あるいは追加の質問を致したいと考えています。
04-26-2015 11:43 PM
TailOfGon様
ようやくLabVIEWの作業に戻って来れたので、ご提供下さったサンプルを真似してみました。
元々作成していた垂直スライダー・水平スライダー・ゲージ・タンクから成るアナログ表示器XControlに
・スケール最大値 (数値)
・スケール最小値 (数値)
・スケール反転 (ブール)
のプロパティを追加しようとしました。
しかし、数値とブールのタイプ定義をアナログ表示器XControl状態.ctlのタイプ定義クラスタに追加する手順がわからず、困っています。
この手順そのものか、手順を説明してある場所のURLを教えて頂けないでしょうか。
以上、ご回答の程よろしくお願い申し上げます。
04-30-2015 03:28 AM
こんにちは、
プロジェクトの.xctl内の状態.ctlのタイプ定義をダブルクリックすると状態.ctlを制御する新しいウィンドウが立ち上がります。
そちらにあるクラスタの中に数値やブールを入れると追加できます。
xcontrolに関してはこちらのリンク先が役に立つと思います。
http://zone.ni.com/reference/ja-XX/help/371361H-0112/TOC44.htm
05-07-2015 12:38 AM
dragon1さま
ありがとうございました。おかげさまで解決しました。
最初にxxxx状態.ctlのデータ定義クラスタに必要な制御器を登録しておき、その後でそれらの制御器を利用するプロパティを追加
するという手順を取ればよかったんですね。
その逆の手順で作ろうとしていたのが失敗の元でした。