|
|
|
|
|
前にご紹介したモニターは、1入力のモニターでしたが、今度は、2入力のモニターです。2入力ですので、色分けが必要になりました。 話はそれますが、Visio2007には、新しく、データー
グラフィックという機能ができました。 この機能は、図形データ(カスタム
プロパティ)や、テキストフィールドや、ユーザー定義のデータや、そのほかいろいろなデータを、シェイプの子シェイプとして配置したリ、いろいろな形のシェイプで表示できる機能です。 この機能を使うと、シェイプが、普通のシェイプからグループに変わります。 ほかのシェイプとまとめてグループになるのではなく、グループの親になります。 Visioのプログラム開発のプロパティに、Shape.Type プロパティがあります。 このプロパティは、値の取得のみ可能で、設定はできません。 このtypeが、普通シェイプのから、グループの親に変わります。 Visio2007のデーター
グラフィック機能を使うと、このTypeプロパティを変更し、普通のシェイプをグループの親にすることができるのです。 ほかのメニューでは、どうやってもできません。ほかに、Visioの図面をXML形式で保存し、テキストエディターで、シェイプを探して、そのTypeをShapeからGroupに変える方法もありますが、データー
グラフィックを使う方がずっと簡単です。 この機能は、シェイプの上でマウスの右ボタンを押しすと出てくるメニューから、「データ」
を選択し、さらに出てくるサブメニューから「データグラフィックの編集」をクリックすると出てくる
「新しいデータグラフィック」 というダイアログを使って、データグラフィックを追加するとできる機能です。 新しくつけたデータグラフィックが不要なら、「データグラフィックの編集」の下の「データグラフィックの削除」というメニューで削除しても、シェイプはグループの親のままです。 普通のシェイプに戻したいときは、メニュー、「グループの解除」を使いますが、前もって、シェイプシートを開き、Protection
というセクションを探し、LockGroup というセルの値を
0 に変えて、グループ保護を解除しておく必要があります。 話を元に戻しますが、このように、モニターをグループの親にすることができるようになりましたので、子シェイプを追加して、色の違うグラフを表示できるようになりました。 背景も付けることができます。 上の図のモニターの下にある
[ShapeSheet Version] と書いてある図形は、データグラフィック機能で付けたもので、そのShapeSheet
Versionというテキストは、シェイプシートのユーザー定義セルに書き込んであるデータを表示させたものです。
|

|
一番上の図では、二つのグラフを上下に並べて平行に表示してありますが、モニターの上で、マウスの右ボタンを押して出てくるメニューから、
[Settings] というメニューを選ぶと出てくるダイアログの、[LayOut] という項目を「Prallel」
から 「Overlay」 に変えると、上の図のように、二つのグラフを重ねて表示できます。 テキストも従来通り表示しコピーすることができます。 やはり、マウスの右ボタンを押し、出てくるメニューから「Show
Text1」を選ぶと、下図のように下側の入力、現在は三角関数Cosの解散結果が赤いテキストで、表示されます。「Show
Text2」 を選ぶと、上の入力の計算結果がテキストで表示されます。両方同時に表示させると、重なって表示されます。
|

|
下の図は、論理計算の場合です。 論理計算用のモニターには、2入力用と3入力用とがあります。 論理計算用のモニターは、10進計算用のモニターとは、全く違うものです。 10進計算用のモニターのグラフは、折れ線グラフでしたが、論理計算用のモニターのグラフは、下の図のように、矩形波になるようにしました。 論理計算の結果は、図のように、フローチャートの入力データがTRUE、FALSEと変化しても、フローチャートの出力は変化しないことがあります。私が作成したモニターは、(モニターには限らず)入力データが変化しないと動作しません。たとえば、TRUE、TRUE、TRUEという入力に対しては、全く反応しません。そのため、10進計算用のモニターを、そのまま論理計算用にしようすると、下のグラフと上のグラフの同期がずれてしまいます。 10進計算用のモニターの場合は、一応そのようなことは起きないとして作っても、あまり問題はありませんでした。 しかし論理計算用のモニターでは重要です。 論理計算のフローチャートでは、フローチャートの入力を、TRUE、FALSEと変化させたとき、フローチャートの出力が変化するのか、しないのかを見たい場合があるからです。そのために、二つのグラフのうち、一番下のグラフを、基準となるグラフと決めて、そのグラフに合わせて残りのグラフが同期をとるようにしました。 そのため、論理計算用のモニターでは、一番下の入力端子には、フローチャートの一番の入力元になるデータを入力するようにしなければなりません。入力端子の配置がTopまたはBottomのときは、一番左の入力端子には、フローチャートの一番の入力元になるデータを入力するようにしなければなりません。下のグラフの入力データが変化しなければ、上のグラフのデータが変化しても、上のグラフは反応しません。上のグラフのデータを変えても、その結果がグラフに反映されるのは、下のグラフのデータが変化したときまで待たされます。
|

|
ところで、上のフローチャートの赤い丸は、今度追加したLEDランプです。Trueになると赤く点灯し、Falseになると消灯して黒くなります。フローチャートの一番左の丸にTのシェイプは、ダブルクリックすると、True・Falseに変わるシェイプです。これも今回追加しました。 論理計算用のモニターの場合も、二つのグラフを重ねるようにできますが、重ねると、識別が困難になります。できるだけ重ねない方がよいでしょう。
上の図のモニターは、VBAバージョンです。実は、ShapeSheetバージョンには、もう一つ問題があります。下の図をご覧ください。非常に簡単なフローチャートです。 でも、なんだか変です。 上のグラフの入力はTrueなのに、グラフはFalseを示しています。 この原因は、上のグラフの入力データになるフローには、下のフローより、たくさんのシェイプがあるためです。 そのため、上のほうのデータの変化が下のデータよりワンテンポ遅れます。 VBAバージョンの場合は、処理速度が遅いため、上の入力データのわずかな遅れは問題になりません。 しかし、ShapeSheetバージョンの場合はちがいます。 シェイプ内部の処理速度は、VBAプログラムに比べて、かなり早いようです。 そのため、ShapeSheetバージョンの場合は、そのわずかなタイミングの遅れが、問題になるようです。このフローシートの下側のデータがTrueからFalseに変わった瞬間には、上の方のフローのデータは、まだTrueに変化していません。 その間に、モニターがグラフを描き終わってしまいます。 その瞬間には、下のグラフだけが、データの変化を反映し、上のデータの変化を反映しません。結果として、上のグラフの変化は、次回ということになり、同期がずれてしまいます。
|

|
このような同期の遅れを補正するには、下の方のグラフへの入力を遅らせればよいわけです。 下の図はフローチャートの下の方の流れにもっとシェイプを追加して、データの到着が遅くなるようにしたものです。 ブランチを一つ追加しただけですが、図を見ていただけば分かるように、これで上のグラフの同期の遅れをふせぐことができました。 これをモニターのシェイプの中でやらせることも試してみましたが、シェイプ内の計算速度が非常に速いためか、全く効果がありませんでした。
|

|
下の図は、3入力モニターの例です。 2種類のモニターがあります。 VBAバージョンの場合は問題がないのですが、ShapeSheetバージョンの場合は、同期をとるために黄色で囲んだ部分のように、データの到達を遅らせるためのシェイプをいくつも追加する必要があります。
|

|
|
==> サンプル図面のダウンロード
|
|
|
|
|
このページのTOPに戻る
|