[プロパティ] ウィンドウには、グリッド内のフィールドが表示されます。 左側の列にはプロパティ名が含まれています。右側の列にプロパティ値が含まれています。
グリッドを操作する
2 列の一覧には、デザイン時に変更できる構成に依存しないプロパティとその現在の設定が表示されます。 すべてのプロパティが表示されない場合があることに注意してください。 プロパティは、たとえば、 HideProperty メソッドを実装することによって非表示として設定できます。 具体的には、子プロパティを持つプロパティを非表示にするには:
pfDisplay
の DisplayChildProperties パラメーターをFALSE
に設定します。pfHide
の HideProperty パラメーターをTRUE
に設定します。
情報を [プロパティ ] ウィンドウにプッシュするために、IDE は ISelectionContainerを使用します。
ISelectionContainer は、[ プロパティ ] ウィンドウに表示される関連プロパティを持つ選択可能なオブジェクトを含む各ウィンドウの VSPackage によって呼び出されます。
ソリューション エクスプローラーによるISelectionContainer呼び出しの実装は、__VSHPROPIDを使用してGetProperty
。プロジェクト階層内でVSHPROPID_BrowseObjectして、階層内の実行可能オブジェクトを取得します。
VSPackage が__VSHPROPIDをサポートしていない場合 。VSHPROPID_BrowseObject、IDE は、__VSHPROPIDの値を使用して GetProperty を使用しようとします 。 階層項目が提供するVSHPROPID_SelContainerします。
プロジェクト VSPackage は ISelectionContainer を作成する必要はありません。これは、それを実装する IDE 提供のウィンドウ パッケージ ( ソリューション エクスプローラーなど) が、その代わりに ISelectionContainer を構築するためです。
ISelectionContainer は、IDE によって呼び出される 3 つのメソッドで構成されます。
CountObjects には、[ プロパティ ] ウィンドウに表示するオブジェクトの数が含まれます。
GetObjectsは、[
IDispatch
] ウィンドウに表示するために選択されたオブジェクトを返します。SelectObjects を使用すると、 GetObjects によって返されるすべてのオブジェクトをユーザーが選択できるようになります。 これにより、VSPackage は UI でユーザーに表示される選択内容を視覚的に更新できます。
[プロパティ] ウィンドウは、IDispatch
オブジェクトから情報を抽出して、参照するプロパティを取得します。 Properties ブラウザーでは、IDispatch
を使用して、ITypeInfo
から取得したIDispatch::GetTypeInfo
のクエリを実行して、サポートするプロパティをオブジェクトに求めます。 その後、ブラウザーはこれらの値を使用して [プロパティ ] ウィンドウに値を設定し、グリッドに表示される個々のプロパティの値を変更します。 プロパティ情報は、オブジェクト自体内で保持されます。
返されるオブジェクトは IDispatch
をサポートするため、呼び出し元は、目的の情報を表す定義済みのディスパッチ識別子 (DISPID) を使用して IDispatch::Invoke
または ITypeInfo::Invoke
を呼び出すことによって、オブジェクトの名前などの情報を取得できます。 宣言された DISPID は、ユーザー定義識別子と競合しないように、負の値になります。
[プロパティ] ウィンドウには、選択したオブジェクトの特定のプロパティの属性に応じて、さまざまな種類のフィールドが表示されます。 これらのフィールドには、編集ボックス、ドロップダウン リスト、カスタム エディター ダイアログ ボックスへのリンクが含まれます。
列挙リストに含まれる値は、GetObjectsする
IDispatch
クエリによって取得されます。 列挙リストから取得した値は、フィールド名をダブルクリックするか、値をクリックしてドロップダウン リストから新しい値を選択することで、プロパティ グリッドで変更できます。 列挙リストの定義済みの設定を持つプロパティの場合は、[プロパティ] リストのプロパティ名をダブルクリックすると、使用可能な選択肢が表示されます。 true/false など、選択肢が 2 つだけの定義済みプロパティの場合は、プロパティ名をダブルクリックして選択肢を切り替えます。値が変更されたことを示す HasDefaultValue が
false
されている場合、値は太字で表示されます。 CanResetPropertyValue は、値を元の値にリセットできるかどうかを判断するために使用されます。 その場合は、値を右クリックし、表示されたメニューから [リセット ] を選択することで、既定値に戻すことができます。 それ以外の場合は、値を手動で既定値に戻す必要があります。 IVsPerPropertyBrowsing また、デザイン時に表示されるプロパティの名前をローカライズしたり非表示にしたりすることもできますが、実行時に表示されるプロパティ名には影響しません。省略記号 (...) ボタンをクリックすると、ユーザーが選択できるプロパティ値の一覧 (カラー ピッカーやフォント リストなど) が表示されます。 IProvidePropertyBuilder は、これらの値を提供します。