'宣言 Public Sub ResolveColorGrabberAppearance( _ ByRef appearance As AppearanceData, _ ByRef requestedProps As AppearancePropFlags, _ ByVal buttonState As UIElementButtonState _ )
public void ResolveColorGrabberAppearance( ref AppearanceData appearance, ref AppearancePropFlags requestedProps, UIElementButtonState buttonState )
Appearance オブジェクトプロパティの未設定の値を調べると、Appearance オブジェクトによって影響されるオブジェクトの表示に実際に使用される内部値ではなく、"use default" 値が返されます。実際に使用される値を調べるためには、ResolveAppearanceメソッドを使用する必要があります。このメソッドは、Appearance オブジェクトのプロパティ値を評価し、そのオブジェクトの見栄えを決定するために使用できる意味のある値にすべてのプロパティを設定して Appearance オブジェクトを返します。
Appearance オブジェクトのプロパティを変更するとき、そのオブジェクトがサポートするすべてのプロパティの値を指定する必要はありません。Appearanceオブジェクトが、ゼロから新規に作成したスタンドアロンオブジェクトであるか、またはすでに他のオブジェクトに関連付けられている組み込みオブジェクトであるかにかかわらず、ある特定のプロパティのみを設定し、それ以外のプロパティを無視することが可能です。明示的に設定していないオブジェクトには、そのプロパティに特定の設定がないことを示す "use default" 値が与えられます。
"use default" 値に設定されたプロパティは、外観の階層に従って他のオブジェクトから設定を継承します。外観階層内の各オブジェクトは、"use default"値の代わりに実際に使用する数値を継承するための親オブジェクトを持っています。"use default"値をプロパティの初期設定と混同しないでください。 プロパティの初期設定は通常"デフォルト値"と呼びます。多くの場合、オブジェクトのプロパティのデフォルト設定は"use default"です。 これは、そのプロパティが初期状態では特定の値を使用するように設定されていないことを意味します。"use default" 値は、列挙プロパティ (通常は "default" で終わる定数で示されます。AlignDefault など) では 0、数値設定 (色関連プロパティで使用される設定など) では -1 (0xFFFFFFFF) です。
したがって、たとえばセルの Appearance オブジェクトの BackColorプロパティが -1 に設定されている場合、コントロールはそのセルの行の BackColorプロパティの設定を使用します。これは外観階層内で行がセルの上に位置するためです。UltraWinGridのAppearanceオブジェクトのいずれかのプロパティが"use default"値に設定されている場合、コントロールはそのプロパティの組み込みの値 ("ファクトリプリセット") を使用します。たとえば、グリッドの Appearance オブジェクトの BackColor プロパティのファクトリプリセットは、システムボタン表面色 (0x8000000F) です。グリッドの Appearance オブジェクトの BackColor プロパティが "use default" 値に設定されている場合は、この値がグリッドの背景色に使用されます。
ResolveAppearance メソッドは、そのすべての "use default" 設定を実際の値に変換して、Appearance オブジェクトを返します。そのためこのメソッドは、明示的な設定が見つかるか、またはファクトリプリセットに達するまで、各プロパティの外観階層を移動します。単にグリッドをフォームに配置してプロジェクトを実行し、グリッドの組み込み Appearance オブジェクトの BackColorプロパティの設定を調べるには、次のコードを使用します。
MsgBox Hex(UltraGrid1.Appearance.BackColor)
...「use default」値 (0xFFFFFFFF) に設定されていることを確認します。ただし、ResolveAppearanceメソッドを使用して同じ値を返す場合は、次のコードを使用します。
MsgBox Hex(UltraGrid1.ResolveAppearance.BackColor)
...システム ボタン表面色 (0x8000000F) に設定されていることを確認します。このコードは、書き込む必要があるコードを簡素化するためにResolveAppearanceメソッドがAppearanceオブジェクトを返すことでメリットを得ることに注意してください。このコードは、以下のように長い形式で記述することができます。
Dim objAppearance as Infragistics.Win.Appearance
Set objAppearance = UltraGrid1.ResolveAppearance
MsgBox Hex(objAppearance.BackColor)