'宣言 Public Overloads Sub ResolveAppearance( _ ByRef appData As Infragistics.Win.AppearanceData, _ ByVal requestedProps As Infragistics.Win.AppearancePropFlags _ )
public void ResolveAppearance( ref Infragistics.Win.AppearanceData appData, Infragistics.Win.AppearancePropFlags requestedProps )
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(UltraWinGrid1.Appearance.BackColor)
...「use default」値(0xFFFFFFFF)に設定されていることを確認します。ただし、ResolveAppearanceメソッドを使用して同じ値を返す場合は、次のコードを使用します。
MsgBox Hex(UltraWinGrid1.ResolveAppearance.BackColor)
...システム ボタン表面色(0x8000000F)に設定されていることを確認します。このコードは、書き込む必要があるコードを簡素化するためにResolveAppearanceメソッドがAppearanceオブジェクトを返すことでメリットを得ることに注意してください。このコードは、以下のように長い形式で記述することができます。
Dim objAppearance as UltraWinGrid.Appearance
Set objAppearance = UltraWinGrid1.ResolveAppearance
MsgBox Hex(objAppearance.BackColor)
Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid Imports System.Diagnostics Private Sub button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button4.Click Dim appData As AppearanceData Dim requestedProps As AppearancePropFlags Dim cell As UltraGridCell Dim row As UltraGridRow ' ----------------------------------------- ' Resolve the appearance of the active cell ' ----------------------------------------- ' Get the active cell cell = Me.ultraGrid1.ActiveCell If cell Is Nothing Then Return ' Initialize the appearance data structure appData = New AppearanceData() ' Specify which appearance properties we want to resolve. ' In this case just the backcolor and forecolor. requestedProps = AppearancePropFlags.BackColor Or AppearancePropFlags.ForeColor ' Call the cell's 'ResolveAppearance' method. cell.ResolveAppearance(appData, requestedProps) ' Write out the resolved colors Debug.WriteLine("BackColor: " + appData.BackColor.ToString() + ", ForeColor: " + appData.ForeColor.ToString()) ' ------------------------------------------------ ' Resolve the appearance of the cell's row ' ------------------------------------------------ ' get the cell's row row = cell.Row ' Re-initialize the appearance data structure appData = New AppearanceData() ' Specify which appearance properties we want to resolve. ' In this case we want all 'Render' properties. This ' includes every property but the 'Cursor' property. requestedProps = AppearancePropFlags.AllRender ' Call the row's 'ResolveAppearance' method. ' The third parameter indicates whether resolve the ' apperance of the preview area or not. row.ResolveAppearance(appData, requestedProps, False) ' Write out the resolved gradient related properties. Debug.WriteLine("BackGradientStyle: " + appData.BackGradientStyle.ToString() + ", BackColor: " + appData.BackColor.ToString() + ", BackColor2: " + appData.BackColor2.ToString()) ' Calling the row's 'ResolveCellAppearance' method is ' functionally equivalent to calling the cell's ' 'ResolveAppearance' method. 'row.ResolveCellAppearance(cell.Column, appData, requestedProps) ' There is also a 'ResolveRowSelectorAppearance' method ' exposed off the row. 'row.ResolveRowSelectorAppearance(appData, requestedProps) ' The header object exposed off bands, columns and groups ' also exposes a 'ResolveRowSelectorAppearance' method. 'cell.Column.Header.ResolveAppearance(appData, requestedProps) ' The AddNewBox also exposes 'Resolve...' methods. 'Me.ultraGrid1.DisplayLayout.AddNewBox.ResolveAppearance(appData, requestedProps) 'Me.ultraGrid1.DisplayLayout.AddNewBox.ResolveButtonAppearance(appData, requestedProps) ' The GroupByBox also exposes 'Resolve...' methods. 'Me.ultraGrid1.DisplayLayout.GroupByBox.ResolveAppearance(appData, requestedProps) 'Me.ultraGrid1.DisplayLayout.GroupByBox.ResolveBandLabelAppearance(appData, requestedProps) 'Me.ultraGrid1.DisplayLayout.GroupByBox.ResolvePromptAppearance(appData, requestedProps) End Sub
using System.Diagnostics; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; private void button4_Click(object sender, System.EventArgs e) { AppearanceData appData; AppearancePropFlags requestedProps; UltraGridCell cell; UltraGridRow row; // ----------------------------------------- // Resolve the appearance of the active cell // ----------------------------------------- // Get the active cell cell = this.ultraGrid1.ActiveCell; if ( cell == null ) return; // Initialize the appearance data structure appData = new AppearanceData(); // Specify which appearance properties we want to resolve. // In this case just the backcolor and forecolor. requestedProps = AppearancePropFlags.BackColor | AppearancePropFlags.ForeColor; // Call the cell's 'ResolveAppearance' method. cell.ResolveAppearance( ref appData, requestedProps ); // Write out the resolved colors Debug.WriteLine("BackColor: " + appData.BackColor.ToString() + ", ForeColor: " + appData.ForeColor.ToString() ); // ------------------------------------------------ // Resolve the appearance of the cell's row // ------------------------------------------------ // get the cell's row row = cell.Row; // Re-initialize the appearance data structure appData = new AppearanceData(); // Specify which appearance properties we want to resolve. // In this case we want all 'Render' properties. This // includes every property but the 'Cursor' property. requestedProps = AppearancePropFlags.AllRender; // Call the row's 'ResolveAppearance' method. // The third parameter indicates whether resolve the // apperance of the preview area or not. row.ResolveAppearance( ref appData, requestedProps, false ); // Write out the resolved gradient related properties. Debug.WriteLine("BackGradientStyle: " + appData.BackGradientStyle.ToString() + ", BackColor: " + appData.BackColor.ToString() + ", BackColor2: " + appData.BackColor2.ToString() ); // Calling the row's 'ResolveCellAppearance' method is // functionally equivalent to calling the cell's // 'ResolveAppearance' method. //row.ResolveCellAppearance( cell.Column, ref appData, requestedProps ); // There is also a 'ResolveRowSelectorAppearance' method // exposed off the row. //row.ResolveRowSelectorAppearance( ref appData, requestedProps ); // The header object exposed off bands, columns and groups // also exposes a 'ResolveRowSelectorAppearance' method. //cell.Column.Header.ResolveAppearance( ref appData, requestedProps ); // The AddNewBox also exposes 'Resolve...' methods. //this.ultraGrid1.DisplayLayout.AddNewBox.ResolveAppearance(ref appData, requestedProps ); //this.ultraGrid1.DisplayLayout.AddNewBox.ResolveButtonAppearance(ref appData, requestedProps ); // The GroupByBox also exposes 'Resolve...' methods. //this.ultraGrid1.DisplayLayout.GroupByBox.ResolveAppearance(ref appData, requestedProps ); //this.ultraGrid1.DisplayLayout.GroupByBox.ResolveBandLabelAppearance(ref appData, requestedProps ); //this.ultraGrid1.DisplayLayout.GroupByBox.ResolvePromptAppearance(ref appData, requestedProps ); }