CodeZine(コードジン)

特集ページ一覧

PlusPakのプロパティマネージャアドインで、急なUI変更に対応しよう

~PlusPakによるプロパティ一括変更の活用~

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2012/01/31 14:00

ダウンロード サンプルソース (28.5 KB)

 後少しでアプリは完成なのに、いきなりのUI変更要望…。皆さんにはそんな経験はありませんか? この記事では、そんな不測の事態に遭遇した時のため、PlusPak for Windows Forms 6.0Jに含まれているVisual Studio用の「プロパティマネージャアドイン」を取り上げます。このアドインを使って簡単にコントロールのプロパティを一括変更し、危機を乗り越えましょう。

はじめに

 業務システムの開発を行っていると、開発プロジェクトも終盤にかかり、システムがほぼ完成に近づいた時、お客様の役員クラスやステークホルダーの方に「ここの文字はもう少し大きくしてくれないか?」や「上下で数字の桁があってないけれど合わせてもらわないと困る」というようなご意見をいただくことがあります。このような要望に対応するには、レイアウト変更とまではいかなくとも、大量にプロパティを同じように変更しなくてはなりません。

 発言した本人にしてみれば、1画面だけをみて「ちょっと1、2か所直すだけだろう」といった軽い気持ちでの発言かもしれません。しかし、その言葉通りに言われた場所だけ修正したとしても、最終的にはその変更の影響はそこだけにはとどまりません。同じようなビジュアルに定義していたコントロールについても「あっちはこうなのになぜこっちはこうなの?同じようにしないとなんか変だよね?」と言われ、残り時間が少ない中でなんとかしなければならない状況になる可能性は、非常に高いです。

 また、単純な修正ヌケやミスなどにより、開発プロジェクト側の意図したとおりに修正しきれていないままリリースし、即バグ修正というループに突入してしまうこともあるかもしれません。

 事前にユーザーコントロールを有効活用したり、フォーム継承などを取り入れたりすることで柔軟に対応できるケースも多いですが、同じくらい人海戦術で直しまくるしかないというケースも多いのではないでしょうか。

 そんな状況でも後から修正が可能なツールが、PlusPak for Windows Forms 6.0Jに含まれているプロパティマネージャアドインなのです。

 今回はこのプロパティマネージャアドインを実際に使ってみて、何ができて何ができないのかを明確にし、年度末の検収に向けて今ここにある危機を乗り越えるための1方法をお伝えしたいと思います。

プロパティマネージャアドインとは?

 市販のコンポーネントで「機能拡張」と聞くと「ツールボックスでアイテムの追加を行い、それをフォームエディタにドラッグ&ドロップしてプロパティを設定すればできあがり」であるとか「専用デザイナを立ち上げ、Visual Studio IDEよりも便利に素早くデザインしてできあがり」といったように、作る前に導入し、プログラムに機能を追加したり、作成する過程を効率化をするものを想像すると思います。

 プロパティマネージャアドインは事前に導入するのではなく、できあがっている状態のVisual Studioソリューションに対しても効果を発揮するVisual Studio用アドインとなります。そのため、システムがほぼ完成してしまった後に「これはまずい!」と気が付いた段階でも導入できます。

PlusPakのインストール

 今回の記事では、執筆時点の最新版である「PlusPak for Windows Forms 6.0J Service Pack 2」をインストールしました。このサービスパックはすでにPlusPak 6.0Jがインストールされていればアップデート、インストールされていなければ新規インストールが必要と自動判断して、セッティングしてくれます。

図1 PlusPak for Windows Forms 6.0J Service Pack 2
図1 PlusPak for Windows Forms 6.0J Service Pack 2

プロパティマネージャアドインのインストール

 PlusPakをインストールしただけでは、プロパティマネージャアドインはまだ利用できません。スタートメニューから[PowerTools PlusPak for Windows Forms 6.0J]-[アドイン]-[PropertyManager アドインのインストール]を起動してください。なお、Visual Studio 2005版とVisual Studo 2008/2010版があるので、使っているVisual Studioのバージョンにあったものを選択してください。

 インストールを開始すると、通常のインストーラではなくVisual Studioコンテンツインストーラが立ち上がります。これはプロパティマネージャがVisual Studioのアドインとして動作するためです。

図2 Visual Studio コンテンツインストーラ
図2 Visual Studio コンテンツインストーラ

 インストールが正常に完了すればVisual Studioの[ツール]-[アドインマネージャ]で表示できるアドインマネージャに「PropertyManager AddIn」が表示されます。

図3 アドインマネージャ
図3 アドインマネージャ

プロパティマネージャアドインによる拡張内容

コンテキストメニューの拡張

 プロパティマネージャアドインをインストールすると、フォームデザイナでコントロールを右クリックして表示できるコンテキストメニューに「プロパティのコピー」と「コントロールの規定値に設定」が追加されています。

図4 コンテキストメニューの拡張
図4 コンテキストメニューの拡張

 この追加されたメニューがどのような機能をもっているかは、後ほど紹介します。

タスクの拡張

 プロパティマネージャアドインによりタスクの内容も追加されます。こちらもコンテキストメニューと同様に「プロパティのコピー」と「コントロールの規定値に設定」が追加されます。

図5 タスクの拡張
図5 タスクの拡張

プロパティのコピー

 例として、デフォルトの「MS UI Gothic」で開発を進めてきたシステムを取り上げます。もう何十画面も作ってしまったし、そもそも1画面にラベルやテキストだって配置済…という状況を思い浮かべてみましょう。そんな状況で「フォントはメイリオがきれいだと聞いたのでメイリオにしてほしい」といきなり言われたらどうしますか?

コントロールのプロパティを変更しよう

 そういったときこそ、PlusPakのプロパティマネージャアドインの出番です。まずは、動きを確認するために1フォームだけのプロジェクトを作成し、フォーム上に複数のテキストボックスとコマンドボタンを配置したもので確認してみます。

図6 サンプルプロジェクト例(CZ120102)
図6 サンプルプロジェクト例(CZ120102)

 では、一番上のテキストボックスTextBox1のフォントを「メイリオ」に変更してみましょう。

図7 メイリオへのフォント変更例
図7 メイリオへのフォント変更例

 もちろんフォント以外のプロパティも変更が必要ならば、同時に変更してください。

プロパティをコピーしよう

 次に、プロパティを変更したコントロールのコンテキストメニューかタスクから[プロパティのコピー]を選択して[プロパティのコピー]ダイアログを表示します。

図8 [プロパティのコピー]ダイアログ
図8 [プロパティのコピー]ダイアログ

 ダイアログの構成は、左側にコピー元となるコントロールのプロパティ一覧(今回の例でいえばフォントを「メイリオ」に変更したコントロール)が表示されていて、右側にはそのコントロール以外の同種のコントロールが一覧表示されています。

 サンプルでは、テキストボックスTextBox1をコピー元としてそこからダイアログを表示したので、右側に表示されるのはテキストボックスTextBox1以外のテキストボックスです。

 ここで注目したいのは左側のプロパティ一覧にも右側のコントロール一覧にもすべてチェックボックスがついている点です。なぜこのようなチェックボックスがついているのかと言うと、次のような操作を可能にするためです。

  1. コピー元のプロパティを選択できる
  2. コピー先のコントロールを選択できる

 今回は「あとからプロパティを変更したい」というストーリーを想定していますが、複数人での開発時、間違えたプロパティ値が散在してしまった場合にプロパティを揃えるといった使い方もできます。

 それでは、左側で[Font]チェックボックスにチェックを入れ、右側ですべてのコントロールのチェックを付けた状態でダイアログの[OK]ボタンまたは[適用]ボタンをクリックしてください。

 テキストボックスのフォントプロパティを確認すると、すべて「メイリオ」に変更されています。

図9 [プロパティのコピー]でコピーされた値
図9 [プロパティのコピー]でコピーされた値

 たったこれだけの操作でプロパティの変更が可能なので、間違える可能性も無く、特別なノウハウも必要ありません。

複数フォームや複数プロジェクトでは?

 1プロジェクト1フォームでの動きが分かったので「複数フォームや複数プロジェクトのときは?」との興味が沸いてきました。もし、1プロジェクト1フォームのときと同じような手間で実現できれば、実際の開発プロジェクトで使用した時にも「真の便利ツールだ!」と叫べるというものです。

図10 複数プロジェクトの例
図10 複数プロジェクトの例

 サンプルのソリューションは、プロジェクトCZ120101に2フォーム、プロジェクトCZ120102に1フォームがあるソリューションです。

 このソリューションで先ほどと同じように[プロパティのコピー]ダイアログを表示すると、ダイアログの右側にソリューションに含まれているすべてのフォーム上のテキストボックス一覧がチェックボックス付で表示されます。

図11 複数プロジェクトでのプロパティのコピー
図11 複数プロジェクトでのプロパティのコピー

 後は、先ほどと同じようにコピーしたいところだけチェックして[OK]ボタンか[適用]ボタンをクリックすれば一発でプロパティのコピー(必要であれば複数のプロパティ値ですら)が可能です。これはもう「すごい便利!すごい!」と叫ぶしかないですね。

コントロールの規定値に設定

 「プロパティのコピー」は名前からも使い道が想像しやすいと思いますし、その想像通りの使い方ができたと思います。では、プロパティマネージャアドインで拡張されるもう1つのメニュー「コントロールの規定値に設定」は何をしてくれるのでしょうか。

設定方法

 コンテキストメニューかタスクから「コントロールの規定値に設定」を選ぶと表示されるダイアログは、次のようなものです。

図12 [コントロールの規定値に設定]ダイアログ
図12 [コントロールの規定値に設定]ダイアログ

 ダイアログの左側はダイアログを起動したコントロールのプロパティ一覧になっています。そして、右側はツールボックスからドラッグ&ドロップしたときのコントロールの規定値になっています。

 左側の値に規定値を変えたいプロパティ名のチェックボックスにチェックを入れてみます。今回はFontプロパティだけですが、複数のプロパティにチェックを入れることもできます。チェックボックスのチェックが終わったら[>]ボタンをクリックすれば右側のプロパティ値が変わります。

新規にコントロールを配置

 ダイアログでの設定が終わったら、本当に規定値が変わるのか確認してみましょう。既存のフォームにツールボックスからテキストボックスをドラッグ&ドロップした結果は、次のようになります。

図13 新規にコントロールを配置した例
図13 新規にコントロールを配置した例

 プロパティマネージャアドインが導入されていない状態であればテキストボックスのFontプロパティは「MS UI Gothic」のはずですが、規定値として登録した「メイリオ」としてコントロールが配置されました。

別プロジェクトでの動作を確認

 複数プロジェクト間での「プロパティのコピー」に続き、「新規プロジェクト」でコントロールを貼りつけたときに規定値が反映されるかを確認してみましょう。

 Visual Studioをすべて終了し、PCを再起動したら、改めてVisual Studioを起動してWindowsフォームプロジェクトを新規作成します。今回は、ツールボックスからテキストボックスコントロールを配置してみました。

図14 新規プロジェクトに新規にコントロールを配置した例
図14 新規プロジェクトに新規にコントロールを配置した例

 このケースでも、期待通りにプロパティマネージャアドインで規定値として登録した「メイリオ」としてコントロールが配置されました。

規定値を元に戻す

 また、コントロールのプロパティの規定値を元に戻す場合は、[コントロールの規定値に設定]ダイアログで右側のチェックボックスのチェックをはずして[OK]ボタンをクリックすることで実現できます。

図15 規定値を元に戻す
図15 規定値を元に戻す

設定を共有する

 プロパティマネージャアドインで設定した値は設定したユーザーでのみ適用されます。別のユーザーでも同じ設定値を使いたい場合は設定ファイルをコピーします。

 設定ファイルの場所はWindows 7やWindows Server 2008であれば「\ユーザー\<ログインユーザー名>\AppData\Roaming\GrapeCity\PlusPak\DefaultSettings」フォルダとなるのでこのフォルダをまるごとコピーすると良いでしょう。

図16 設定を共用する
図16 設定を共用する

まとめ

 プロパティマネージャアドインは画面内のコントロールのプロパティ一括変換ができるだけではなく、他の画面や他のプロジェクト、他のソリューションでも適用できる優れものでした。また、後から直す場合だけでなく、作成途中のアプリケーションもドラッグ&ドロップで規定値の初期設定が可能だという点も、かなり便利なものでした。

 あえて注文をつけるとするなら、例えばFontプロパティのようにテキストボックス以外にも存在するプロパティの場合、同種コントロール以外にもプロパティのコピーができたら便利かとも思いました。しかし、それで現在の操作性が損なわれるのは嫌ですし、それほど多くの種類のコントロールを同時に使う事も少ないでしょうから、コントロールごとに作業しても十分効率的です。

 実際に使用することで、プロパティマネージャアドインの便利さを実感しました。人の力で直して抜け漏れがないか細心の注意を払うよりも、プロパティマネージャアドインを使って安心して変更作業ができる環境を手に入れてみませんか。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 初音玲(ハツネアキラ)

     国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。  個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。  Microsoft MVP for Windows Development...

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5