2006 年 6 月 6 日 19 時 20 分

解答進捗の可視化


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


現在は、マクロを実行するといきなり結果が表示される。
それはそれで急ぎのときは便利だが、
デバッグ中や、進捗を視覚的に確認したい場合は、
随時画面上に反映されたほうがよい。

結果がいきなり表示される理由は、
Solve マクロの実装にある。

Solve マクロは、PuzzleSolver を作成し、
Solve メソッドを実行して解答を求め、
解答が出てから Answer プロパティ経由で解答を取得し、
一気に画面に反映させる手順を取っているからである。

これを随時確認できるようにするためには、
以前と同様、PuzzleAnswer のイベントを受け取ればよい。

イベントを使う最大のメリットはここにある。
イベントを発生させる側は、
受け取り先のことを考慮しなくてよいのだ。

今回の場合、PuzzleSolver の実装側が、
Excel のワークシートのことなど一切気にせずに、
クライアントに状況通知をすることができるのだ。

以前は、PuzzleLine(身内)に対して利用したが、
呼び出し元に対しても同じように提供することができる。

ただ、イベントを受け取るためには少し制約があり、
WithEvents キーワードを使って、
クラスのフィールドとして参照変数を定義する必要がある。

現在、マクロは標準モジュールに登録しているので、
このままではイベントを受け取ることができない。
そこで、「利用側」のクラスを定義し、
そこでイベントを受け取る必要がある。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.