SophiaFramework UNIVERSE 5.3 |
#include <SFXHierarchyProperty.h.hpp>
class SFXHierarchyProperty;
SFMTYPEDEFCLASS(SFXHierarchyProperty)
SFXHierarchyProperty クラスは、 属性キー(UInt32 型)から最大 4 バイトの属性値 (SFXHierarchyProperty::ValueRec 型)へのマップのプロパティを表すクラスです。
SFXHierarchyProperty クラスのインスタンスには、 階層的に親子関係を設定することが可能です。
例えば、 SFZTableView / SFOTableViewColumn / SFOTableCellReactor の各クラスが保持するプロパティは この順に親子関係があり、子プロパティに存在しない属性は親プロパティから継承します。
具体的には、 属性キー P-Key について、 親プロパティに属性値 P-ValueParent が設定されているが、 子プロパティには属性値が設定されていない場合、 子プロパティの属性値は P-ValueParent になります。
逆に、 親プロパティ、子プロパティに属性値としてそれぞれ P-ValueParent / P-ValueChild が設定されている場合は、 子プロパティの属性値はオーバーライドされ、 P-ValueChild になります。 親プロパティの属性値は何れの場合も、P-ValueParent です。
プロパティの親プロパティを設定するには、 SFXHierarchyProperty::SetParent 関数を利用します。 親プロパティが設定されていないプロパティはルートプロパティと呼びます。
以下の表は、フォント属性 SFLPROP_FONT をそれぞれのクラスに設定したときに、 実際のフォントの値がそれぞれのクラスでどのように見えるかを表した例です。
クラス名 | 設定した属性値 | 見かけの属性値 |
---|---|---|
SFZTableView | AEE_FONT_LARGE | AEE_FONT_LARGE |
SFOTableViewColumn | なし | AEE_FONT_LARGE |
SFOTableCellReactor | AEE_FONT_NORMAL | AEE_FONT_NORMAL |
親のプロパティでも自身のプロパティでも定義されていない属性キーは不定となり、その値の解釈はそれぞれのクラスに任されます。
属性値は SFXHierarchyProperty::ValueRec 共用体で構成され、型に応じたメンバにアクセスすることでキャストの手間を省くことができます。
SFZTableView / SFOTableViewColumn / SFOTableCellReactor / SFOTableCellTextReactor / SFOTableCellToggleReactor / SFOTableCellImageReactor クラスが内部に保持する、 階層プロパティ(SFXHierarchyProperty)の内容は以下の表にある通りです。
注意 | |
---|---|
デフォルト値が記入されている属性は、 テーブルビュー(SFZTableView)のプロパティ(ルートプロパティ)にすべて設定されています。 ただし、SFLPROP_LEFTTOP_MARGIN_SIZE / SFLPROP_RIGHTTOP_MARGIN_SIZE 属性を除きます。 |
表 217. SFZTableView / SFOTableViewColumn / SFOTableCellReactor のプロパティ
属性キー | 属性値(デフォルト値) | 解説 |
---|---|---|
SFLPROP_FONT | - | フォント: この属性が設定されていない場合は AEE_FONT_NORMAL |
SFLPROP_ALIGNMENT | - | アライメント: この属性が設定されていない場合は (IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE) |
SFLPROP_EDITABLE | - | 編集可能であるかどうかどうか: この属性が設定されていない場合は false(編集不可) |
SFLPROP_HORIZONTAL_RULED_LINE_ENABLE | true | 水平罫線を表示するかどうか: デフォルトの設定は、true(水平罫線は表示される) |
SFLPROP_VERTICAL_RULED_LINE_ENABLE | true | 垂直罫線を表示するか: デフォルトの設定は、true(垂直罫線は表示される) |
SFLPROP_FIXED_WIDTH | - | 横幅(固定) |
SFLPROP_FIXED_HEIGHT | - | 縦幅(固定): この属性は未使用 |
SFLPROP_LEFTTOP_MARGIN_SIZE | SFOTableCellToggleReactor の場合: (1, 1)、SFOTableCellTextReactor の場合: (2, 1) | 左上マージンサイズ: この属性が設定されていない場合、マージンは (0, 0) |
SFLPROP_RIGHTBOTTOM_MARGIN_SIZE | SFOTableCellToggleReactor の場合: (1, 1)、SFOTableCellTextReactor の場合: (2, 1) | 右下マージンサイズ: この属性が設定されていない場合、マージンは (0, 0) |
SFLPROP_COLOR_GRADIENT_STYLE | 0 | グラディエーション表示にするかどうか(0: しない、1: する) |
SFLPROP_HEADER_BEVEL_LIGHT_COLOR | SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) | ヘッダーのベベルカラーのライトカラー |
SFLPROP_HEADER_BEVEL_BASE_COLOR | SFXRGBColor(0xDD, 0xDD, 0xDD, 0x00) | ヘッダーのベベルカラーのベースカラー |
SFLPROP_HEADER_BEVEL_DARK_COLOR | SFXRGBColor(0x88, 0x88, 0x88, 0x00) | ヘッダーのベベルカラーのダークカラー |
SFLPROP_HEADER_SEPARATOR_COLOR | SFXRGBColor(0x6E, 0x6E, 0x6E, 0x00) | ヘッダーセパレーターの色 |
SFLPROP_OUTER_BEVEL_LIGHT_COLOR | SFXRGBColor(0xAA, 0xAA, 0xAA, 0x00) | 外枠のベベルカラーのライトカラー |
SFLPROP_OUTER_BEVEL_BASE_COLOR | SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) | 外枠のベベルカラーのベースカラー |
SFLPROP_OUTER_BEVEL_DARK_COLOR | SFXRGBColor(0xEE, 0xEE, 0xEE, 0x00) | 外枠のベベルカラーのダークカラー |
SFLPROP_INNER_BEVEL_LIGHT_COLOR | SFXRGBColor(0x6E, 0x6E, 0x6E, 0x00) | 内枠のベベルカラーのライトカラー |
SFLPROP_INNER_BEVEL_BASE_COLOR | SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) | 内枠のベベルカラーのベースカラー |
SFLPROP_INNER_BEVEL_DARK_COLOR | SFXRGBColor(0xAA, 0xAA, 0xAA, 0x00) | 内枠のベベルカラーのダークカラー |
SFLPROP_BACKGROUND_COLOR | - | 背景色: この属性は未使用 |
SFLPROP_BACKGROUND_GRADIENT_COLOR | - | 背景をグラディエーション表示にする色: この属性は未使用 |
SFLPROP_FOREGROUND_COLOR | - | 前景色: この属性が設定されていない場合は SFXRGBColor(0x00, 0x00, 0x00, 0x00) [黒色] |
SFLPROP_FOREGROUND_GRADIENT_COLOR | - | 前景をグラディエーション表示にする色: この属性は未使用 |
SFLPROP_SELECTED_BACKGROUND_COLOR | SFXRGBColor(0x71, 0x9C, 0xE2, 0x00) | 選択時(含む、フォーカス状態)の背景色 |
SFLPROP_SELECTED_BACKGROUND_GRADIENT_COLOR | SFXRGBColor(0x71, 0x9C, 0xE2, 0x00) | 選択時(含む、フォーカス状態)の背景をグラディエーション表示にする色 |
SFLPROP_SELECTED_FOREGROUND_COLOR | - | 選択時(含む、フォーカス状態)の前景色: この属性が設定されていない場合は SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) [白色] |
SFLPROP_SELECTED_FOREGROUND_GRADIENT_COLOR | - | 選択時(含む、フォーカス状態)の前景をグラディエーション表示する色: この属性は未使用 |
SFLPROP_RULED_LINE_COLOR | SFXRGBColor(0xF0, 0xF0, 0xF0, 0x00) | 罫線の色 |
SFLPROP_RULED_LINE_COLOR | - | スクロールの方向: この属性が設定されていない場合は SFYSingleTextWidget::DEFAULT_DIRECTION |
SFLPROP_TEXT_SCROLL_INTERVAL | - | スクロールインターバル[単位:ミリ秒]: この属性が設定されていない場合は SFYSingleTextWidget::DEFAULT_SCROLL |
SFLPROP_TEXT_SCROLL_WAITINTERVAL | - | スクロール開始までの待ち時間[単位:ミリ秒]: この属性が設定されていない場合は SFYSingleTextWidget::DEFAULT_WAIT |
SFLPROP_TEXT_SCROLL_STEP | - | スクロール移動量[単位:ピクセル]: この属性が設定されていない場合は SFYSingleTextWidget::DEFAULT_STEP |
注意 | |
---|---|
ユーザー定義クラスで 階層プロパティ(SFXHierarchyProperty)を使用する場合、 属性の解釈やデフォルト値は以下の内容に関係なく自由に変更・設定可能です。 また、SFLPROP_USER_CLASS_BEGIN(0x8000)から SFLPROP_USER_CLASS_END(0xFFFE) の間にユーザー独自の属性を定義することも可能です。 |
未使用の属性について | |
---|---|
未使用の属性に値を設定しても何も行われません。 |
SFXHierarchyProperty::ValueRec | SFXHierarchyProperty::SetParent | SFYSingleTextWidget::DefaultEnum | SFYSingleTextWidget::DirectionEnum | AEEFont | IDF_ALIGN_ | SFXMargin | SFZTableView | SFOTableViewColumn | SFOTableCellReactor | SFOTableCellTextReactor | SFOTableCellToggleReactor | SFOTableCellImageReactor | SFXRGBColor
コンストラクタ/デストラクタ |
---|
SFXHierarchyProperty( Void ) SFXHierarchyProperty クラスのコンストラクタです。
|
~SFXHierarchyProperty( Void ) SFXHierarchyProperty クラスのデストラクタです。
|
パブリック関数 | |
---|---|
Bool |
Contains(
UInt32 key
, Bool recursive = true
) 指定された属性キーが含まれるか判定します。
|
ValueRec |
Get(
UInt32 key
, BoolPtr found = null
, Bool recursive = true
) 指定された属性キーに対する属性値を取得します。
|
Bool |
HasParent( Void ) 親プロパティが設定されているかどうかを判定します。
|
SFCError |
Set(
UInt32 key
, ValueRec value
) 指定された属性キーに指定された属性値を設定します。
|
Void |
SetParent(
SFXHierarchyPropertyConstPtr parent
) 親プロパティを設定します。
|
型 |
---|
ValueRec 属性値を表す共用体です。
|
[ public, explicit ] SFXHierarchyProperty(Void);
このコンストラクタは、何も行いません。
[ public ] ~SFXHierarchyProperty(Void);
このデストラクタは、何も行いません。
[ public, const ] Bool Contains( UInt32 key // 属性キー Bool recursive = true // このプロパティだけでなく再帰的に親プロパティを辿って検索するかどうか );
この関数は、 指定された属性キーが含まれるか判定します。
recursive 引数に true(デフォルト) に指定すると、 このプロパティに属性キー含まれなければ、再帰的にルートプロパティまで親プロパティを検索します。 false の場合は、このプロパティだけを検索します。
recursive 引数のデフォルト値は、true です。
注意 | |
---|---|
SFXHierarchyProperty::Get 関数を使用しても属性キーの存在性を判定できますが、 この場合、属性値も取得できます。 |
[ public, const ] ValueRec Get( UInt32 key // 属性キー BoolPtr found = null // 属性キーの存在性についての判定結果を格納する場所 Bool recursive = true // このプロパティだけでなく再帰的に親プロパティを辿って検索するかどうか );
この関数は、 指定された属性キーに対する属性値を取得します。
recursive 引数に true(デフォルト) に指定すると、 このプロパティに属性キー含まれなければ、再帰的にルートプロパティまで親プロパティを検索します。 false の場合は、このプロパティだけを検索します。
属性キーが存在しなかった場合、 null に相当する SFXHierarchyProperty::ValueRec の値が取得されます。
recursive 引数のデフォルト値は、true です。
found 引数を指定すると、 この引数に指定した場所に属性キーの存在性についての判定結果が格納されます。 属性キーが存在しない場合は、null が格納されます。
found 引数のデフォルト値は、null です(属性キーの存在性についての判定結果は返されません)。
[ public, const ] Bool HasParent(Void);
この関数は、 このプロパティに親プロパティが設定されているかどうかを判定します。
この関数は、 指定された属性キーに指定された属性値を設定します。
注意 | |
---|---|
SFXHierarchyProperty::ValueRec 共用体は各種変換コンストラクタを備えているため、 ValueRec 共用体型の値でなくても、値を設定できる場合があります。 |
ValueRec(SFXRGBColorConstRef param) 変換コンストラクタの適用
SFXHierarchyProperty property;
// 背景色を青色に設定する
property.Set(SFLPROP_BACKGROUND_COLOR, SFXRGBColor(0x00, 0x00, 0xBB, 0x00));
[ public, const ] Void SetParent( SFXHierarchyPropertyConstPtr parent // 設定する親プロパティ );
この関数は、 このプロパティに親プロパティを設定します。
注意 | |
---|---|
親プロパティを設定することで、子プロパティは親プロパティの属性を継承します。 また、子プロパティにおいて親プロパティの属性をオーバーライドすることも可能です。 親プロパティを持たないプロパティのことをルートプロパティと呼びます。 |
SFMTYPEDEFUNION(ValueRec) union ValueRec { // 各種メンバ変数 SIntN sn; UIntN un; SInt32 s32; UInt32 u32; SInt16 s16; UInt16 u16; SInt08 s08; UInt08 u08; Bool flag; VoidPtr ptr; AEEFont font; SFXRGBColor::AtomRec color; SFXSize::AtomRec size; SFXGrid::AtomRec grid; // デフォルトコンストラクタ ValueRec (Void); // 各種変換コンストラクタ ValueRec (ValueRecConstRef param); ValueRec (SIntNConstRef param); ValueRec (UIntNConstRef param); ValueRec (SInt32ConstRef param); ValueRec (UInt32ConstRef param); ValueRec (SInt16ConstRef param); ValueRec (UInt16ConstRef param); ValueRec (SInt08ConstRef param); ValueRec (UInt08ConstRef param); ValueRec (VoidPtrConstRef param); ValueRec (SFXRGBColorConstRef param); ValueRec (SFXRGBColor::AtomRecConstRef param); ValueRec (SFXSizeConstRef param); ValueRec (SFXSize::AtomRecConstRef param); ValueRec (SFXGridConstRef param); ValueRec (SFXGrid::AtomRecConstRef param); // 設定関数 ValueRecRef Set (ValueRecConstRef param); ValueRecRef Set (SIntNConstRef param); ValueRecRef Set (UIntNConstRef param); ValueRecRef Set (SInt32ConstRef param); ValueRecRef Set (UInt32ConstRef param); ValueRecRef Set (SInt16ConstRef param); ValueRecRef Set (UInt16ConstRef param); ValueRecRef Set (SInt08ConstRef param); ValueRecRef Set (UInt08ConstRef param); ValueRecRef Set (VoidPtrConstRef param); ValueRecRef Set (SFXRGBColorConstRef param); ValueRecRef Set (SFXRGBColor::AtomRecConstRef param); ValueRecRef Set (SFXSizeConstRef param); ValueRecRef Set (SFXSize::AtomRecConstRef param); ValueRecRef Set (SFXGridConstRef param); ValueRecRef Set (SFXGrid::AtomRecConstRef param); // 代入演算子 ValueRecRef operator= (ValueRecConstRef param); ValueRecRef operator= (SIntNConstRef param); ValueRecRef operator= (UIntNConstRef param); ValueRecRef operator= (SInt32ConstRef param); ValueRecRef operator= (UInt32ConstRef param); ValueRecRef operator= (SInt16ConstRef param); ValueRecRef operator= (UInt16ConstRef param); ValueRecRef operator= (SInt08ConstRef param); ValueRecRef operator= (UInt08ConstRef param); ValueRecRef operator= (VoidPtrConstRef param); ValueRecRef operator= (SFXRGBColorConstRef param); ValueRecRef operator= (SFXRGBColor::AtomRecConstRef param); ValueRecRef operator= (SFXSizeConstRef param); ValueRecRef operator= (SFXSize::AtomRecConstRef param); ValueRecRef operator= (SFXGridConstRef param); ValueRecRef operator= (SFXGrid::AtomRecConstRef param); };
属性値は 4 バイト以下の値を表す共用体で、 様々な型の値を設定できるように設定関数、変換コンストラクタ、代入演算子が定義されています。
値を取得するときは、メンバ変数でアクセスします。
SFXRGBColor white(0xFF, 0xFF, 0xFF, 0x00); SFXRGBColor color; SFXHierarchyProperty::ValueRec value; // 白色を設定する (設定関数) value.Set(white); // メンバ変数によるアクセス color = value.color; if (color == white) { TRACE("color is white."); } // 白色を設定する (代入演算子) value = white; // メンバ変数によるアクセス color = value.color; if (color == white) { TRACE("color is white, again."); } // 変換コンストラクタの適用 SFXHierarchyProperty::ValueRec another(white); // メンバ変数によるアクセス color = another.color; if (color == white) { TRACE("color is white, again and again."); }
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |