SolutionXML
前回の続きで、SolutionXML の使い方を紹介します。SolutionXML は図面全体に 1 つと各セルに 1 つずつ作成することができます。要素名を SolutionXML としてその中に任意のデータを挿入していくことが可能です。図面を XML 形式で保存しておけば、XML パーサーを使ってデータの読み書きができます。また、図面をバイナリ形式で保存しても失われることがありません。
SDK にある VS.NET 用のウィザードとコード ライブラリアンを使って、小さなデモ プロジェクトを作っていきます。コード ライブラリアンには SolutionXML の読み書きを行うためのモジュールが登録されています。
では VS.NET を起動して、新しい Visual C# プロジェクトを作成しましょう。[テンプレート] には [Visio add-in or add-on] というアイコンがみえるはずなのでそれを選択して [OK] をクリックしてください。
プロジェクト作成のためのウィザードが起動します。2 番目の画面では、[Create Visio EXE add-on] を選択してください。Add-in と Add-on の違いについては別の機会に触れることにします。次の画面で [Finish] をクリックすると、必要な参照設定が終わった状態の Visio アドオンのプロジェクト (しかもセットアップ プロジェクトつき) がコード入力を待っているはずです。まずはコンパイルできるかどうか確認してください。
AddonDialog.cs にいくつかのコントロールがついていますが今回は使いません。フォームに新しいボタンを 1 つ追加し、それを今回のコードのトリガとしましょう。
さて、SDK ツールの 1 つである Code Librarian Viewer を起動してください。右側のツリーで C# 、Integration、Data Storage、と展開していくと [String To Formula]、[Formula to String]、[Data Storage in Solution XML] というコード サンプルが出てくるはずです。[String To Formula] を右クリックして [Copy] を選択するとサンプルを丸ごとコピーできます。VS.NET に戻り、クラスを追加し、VS が追加したコードはすべて削除してコピーしたばかりのサンプルをそのまま貼り付けてください。これで String To Formula クラスがプロジェクトに追加されました。同じ要領で [Formula to String] と [Data Storage in Solution XML] も追加します。Data Storage in Solution XML が今回の主役で、このクラスの中にあるデモ コードをそのまま使って SolutionXML を扱ってみることにします。残りの 2 つのクラスはデモを動かすために必要なものです。
フォームに戻り、先ほど追加したボタンをダブルクリック。クリック メソッドのコードが入力できるようになるので、以下のコードを入力します。Visio と Data Storage in Solution XML のインスタンスを作成し、Data Storage in Solution XML のデモ用メソッドを呼び出しています。
Microsoft.Office.Interop.Visio.Application visioApplication;
Microsoft.Samples.Visio.CSharp.SolutionXmlManipulator xmlUtil;
visioApplication = new Microsoft.Office.Interop.Visio.Application();
xmlUtil = new Microsoft.Samples.Visio.CSharp.SolutionXmlManipulator();xmlUtil.DemoSolutionXml(visioApplication);
Using キーワードを使えばもっとすっきりできるのですが今回は割愛します。
では F5 を押してデバッグしてみましょう。問題がなければ AddonDialog フォームが表示されるので、先ほどのボタンをクリックしてみてください。 Visio が起動し、以下のようなポップアップ ダイアログが表示されます。
これが今回 VisioDocument と UserCell の中に埋めこんだ SolutionXML です。デバッグを終了して、Data Storage in Solution XML の DemoSolutionXml をのぞいてみると、定数で指定した XML データを図面の中に埋め込んだり、読み出したりしているのがわかると思います。GetDocumentXML や SetCellXML といった便利なメソッドもすべてこのクラスが提供しています。
コードが作成した図面は図形などのデータは何も追加されていませんが、実は見えないところでデータが埋め込まれているわけです。せっかくだからこの図面は XML 形式で保存しておいて、次回また使ってみることにしましょう。
最後にヒントを 1 つ。XML 形式で保存するときに、SolutionXML 内の XML 構造を Visio に自動的に検証させる機能があります。レジストリ キーを追加する必要があるので、自己責任で、という条件つきになってしまいますが。
- HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Visio\Application に XMLValidateOnSave という名前の文字列値を追加します
- XMLValidateOnSave のデータを 1 にします
それではまた次回。
<担当: M>
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。マイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
Comments
Anonymous
February 03, 2007
The comment has been removedAnonymous
March 28, 2007
<a href= http://my39842.livejournal.com >spring craft shows connecticut</a> <a href= http://my11274.livejournal.com >harbor springs golf club</a> <a href= http://my22926.livejournal.com >tony evans ministries</a> <a href= http://my84857.livejournal.com >lindsay korman pictures</a> <a href= http://my76855.livejournal.com >free act of contrition prayer card</a>Anonymous
March 30, 2007
Very nice! I have some LJ with news, check this out: <a href= http://iwantubadlyz.livejournal.com >Newest news</a> <a href= http://annakubat.livejournal.com >Check this out</a> <a href= http://jackie_simpson.livejournal.com >livejournal</a>Anonymous
March 30, 2007
Very nice! I have some LJ with news, check this out: <a href= http://michelas.livejournal.com >My live journal</a> <a href= http://homerius.livejournal.com >Lastest news</a> <a href= http://johnyknoxw.livejournal.com >My live journal</a>Anonymous
April 05, 2007
Very nice! I have some sites with news, check this out: <a href= http://nuhost.info >Politics news</a> <a href= http://susearch.info >Lastest news</a> <a href= yanasearch.info >Lifestyle news</a>Anonymous
April 05, 2007
Very nice! I have some sites with news, check this out: <a href= http://kreolikko.livejournal.com >Politics news</a> <a href= http://icefroggg.livejournal.com >Lastest news</a> <a href= http://icyiceman.livejournal.com >Lifestyle news</a>Anonymous
May 08, 2007
ja krevetko! Vsem sasat'! <a href="http://mamaha.info/drugs/">site map</a>Anonymous
June 08, 2009
PingBack from http://cellulitecreamsite.info/story.php?id=7094Anonymous
June 18, 2009
PingBack from http://thestoragebench.info/story.php?id=3478