![]() ![]() ![]() ![]() |
SophiaFramework UNIVERSE 5.2 |
#include <SFOTableCellReactor.h.hpp>
class SFOTableCellReactor : public SFOTableCellVisitor;
SFMTYPEDEFREFOBJECT(SFOTableCellReactor)
SFOTableCellReactor クラスは、 テーブルセルの描画や、テーブルセル選択時の振る舞いに関するインターフェイスを提供する抽象クラスです。
デフォルトの具象テーブルセルリアクタークラスとして SFOTableCellTextReactor / SFOTableCellToggleReactor / SFOTableCellImageReactor クラスが提供されます。 これらの具象テーブルセルリアクタークラスを利用して、 テーブルビューのセルには列単位でテキスト、チェックボックス、画像を表示できます。 テキストとチェックボックスのセルは編集することも可能です。
テーブルビューカラム(SFOTableViewColumn)に付き 1 つのテーブルセルリアクター(SFOTableCellReactor)を関連付ける必要があります。
![]() |
注意 |
---|---|
テーブルビューカラムとテーブルセルリアクターの関連付けは、 SFOTableViewColumn::NewInstance 関数、または SFOTableViewColumn::SetCellReactor 関数を利用して行います。 |
SFOTableCellReactor クラスは、 主に以下の 5 つの機能(インターフェイス)を提供します。
![]() |
テーブルセル |
---|---|
SFZTableView クラスの行と列で指定される 1 つの要素をテーブルセル、または単にセルと呼びます。 |
![]() |
テーブルセルリアクター |
---|---|
SFOTableCellReactor クラスまたはその継承クラスをテーブルセルリアクター、 または単にセルリアクターと呼びます。 |
コンストラクタ/デストラクタ |
---|
SFOTableCellReactor( Void ) SFOTableCellReactor クラスのコンストラクタです。
|
~SFOTableCellReactor( Void ) SFOTableCellReactor クラスのデストラクタです。
|
パブリック関数 | |
---|---|
static SFXRectangle |
Align(
SFXRectangleConstRef src
, SFXRectangleConstRef ref
, UInt32 alignment
) 対象の矩形領域をアライメントと参考領域に基づいて整列した矩形領域を返します。
|
UInt32 |
GetAlignment( Void ) 階層プロパティからアライメントを取得します。
|
AEEFont |
GetFont( Void ) 階層プロパティからフォントを取得します。
|
SFXRGBColor |
GetForegroundColor( Void ) 階層プロパティから前景色を取得します。
|
SFXMargin |
GetMargin( Void ) テーブルセルの領域とセルの描画領域とのマージンを取得します。
|
SFXRGBColor |
GetSelectedForegroundColor( Void ) 階層プロパティから選択された状態の前景色を取得します。
|
Bool |
IsEditable( Void ) 編集可能であるかどうかを判別します。
|
ValueRec |
GetProperty(
UInt32 key
, BoolPtr found = null
, Bool recursive = true
)
(SFOTableCellVisitor から継承)
属性キーに対応する属性値を取得します。
|
Bool |
HasProperty(
UInt32 key
, Bool recursive = true
)
(SFOTableCellVisitor から継承)
指定された属性キーに対応する属性値が設定されているかどうかを判定します。
|
SFCError |
SetProperty(
UInt32 key
, ValueRec value
)
(SFOTableCellVisitor から継承)
属性キーに対応する属性値を設定します。
|
プロテクト関数 | |
---|---|
Bool |
Handle(
SFXAnyRef object
, SInt32 row
) テーブルセルが選択されたときの振る舞いを行います。
|
Void |
InvokeResultCell( Void ) テーブルセルの選択完了を知らせます。
|
Bool |
IsWidgetAttachable( Void ) ウィジェットを取り付け可能かどうかを判定します。
|
Void |
OffFocus(
SInt32 row
, SFYWidgetSmpPtr widget
) テーブルセルのフォーカスが外れたときの振る舞いを行います。
|
Void |
OnFocus(
SFXRectangleConstRef bound
, SFXAnyConstRef object
, SInt32 row
, SFYWidgetSmpPtr widget
) テーブルセルにフォーカスが当たったときの振る舞いを行います。
|
Void |
Render(
SFXGraphicsPtr graphics
, SFXRectangleConstRef bound
, SFXAnyConstRef object
, SInt32 row
, Bool active
, Bool focus
) テーブルセルを描画します。
|
static SFORefObjectSmp |
Factory(
SFORefObjectPtr object
, SFCErrorPtr exception
)
(SFORefObject から継承)
NewInstance 関数の実装を補助します。
|
SFCError |
Initialize( Void )
(SFORefObject から継承)
初期化を行います。
|
Void |
SetParent(
SFXHierarchyPropertyConstPtr parent
)
(SFOTableCellVisitor から継承)
親プロパティを設定します。
|
[ protected, explicit ] SFOTableCellReactor(Void);
このコンストラクタは、 何も行いません。
[ protected, virtual ] ~SFOTableCellReactor(Void);
このデストラクタは、 何も行いません。
[ public, static ] SFXRectangle Align( SFXRectangleConstRef src // 整列対象の矩形領域 SFXRectangleConstRef ref // 整列の参考にする矩形領域 UInt32 alignment // アライメント );
整列後の矩形領域。
この関数は、 対象の矩形領域をアライメントと参考領域に基づいて整列した矩形領域を返します。
![]() |
注意 |
---|---|
この関数は元の領域に影響を与えません。 |
SFOTableCellImageReactor::Render() 関数の実装コード
/*public virtual */Void SFOTableCellImageReactor::Render(SFXGraphicsPtr graphics, SFXRectangleConstRef bound, SFXAnyConstRef object, SInt32 row, Bool active, Bool focus) const { AEEImageInfo info; SFXRectangle rx; SFXRectangle content; SFXRectangle clip; SFBImageSmpPtr ptr; SFBImageSmp image; unused(row); unused(active); unused(focus); if ((ptr = any_cast<SFBImageSmp>(const_cast<SFXAnyPtr>(&object))) != null) { if ((image = *ptr) != null) { image->GetInfo(&info); if (info.cx > 0 && info.cy > 0) { clip.Set(graphics->GetClip()); content.Set(SFXRectangle(bound).Deflate(GetMargin())); graphics->SetClip(SFXRectangle(content).Intersection(clip)); rx.SetSize(info.cx, info.cy); rx.Set(Align(rx, content, GetAlignment())); graphics->DrawImage(image, rx.GetOrigin()); graphics->SetClip(clip); } } } return; }// SFOTableCellImageReactor::Render //
[ public, const ] UInt32 GetAlignment(Void);
UInt32 型アライメント値
この関数は、 階層プロパティからアライメントを取得します。
SFLPROP_ALIGNMENT 属性を検索して、 UInt32 型のアライメント値を取得します。
UInt32 型のアライメント値は BREW の水平アライメントと垂直アライメントの論理和です。
キーが見つからないときは、(IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE) が返却されます。
![]() |
BREW の水平アライメント |
---|---|
|
![]() |
BREW の垂直アライメント |
---|---|
|
[ public, const ] AEEFont GetFont(Void);
フォント(AEEFont)。
この関数は、 階層プロパティからフォントを取得します。
SFLPROP_FONT 属性を検索して、 AEEFont 型のフォントを取得します。
SFLPROP_FONT 属性キーが見つからないときは、AEE_FONT_NORMAL が返却されます。
[ public, const ] SFXRGBColor GetForegroundColor(Void);
この関数は、 階層プロパティから前景色を取得します。
SFLPROP_FOREGROUND_COLOR 属性を検索して、 SFXRGBColor 型の前景色を取得します。
SFLPROP_FOREGROUND_COLOR 属性キーが見つからないときは、 SFXRGBColor(0x00, 0x00, 0x00, 0x00) [黒色] が返却されます。
[ public, const ] SFXMargin GetMargin(Void);
マージン(SFXMargin)。
この関数は、 テーブルセルの領域とセルの描画領域とのマージンを取得します。
SFLPROP_LEFTTOP_MARGIN_SIZE 属性 [左上マージンサイズ] と SFLPROP_RIGHTBOTTOM_MARGIN_SIZE 属性 [右下マージンサイズ] から SFXMargin 型のマージンを取得します。
どちらかのキーが見つからなかったときは、見つからなかった方のサイズが (0, 0) になります。
どちらののキーも見つからないときは、SFXMargin(0, 0, 0, 0) が返却されます。
![]() |
注意 |
---|---|
SFOTableCellToggleReactor クラスでは、 SFLPROP_LEFTTOP_MARGIN_SIZE 属性と SFLPROP_RIGHTBOTTOM_MARGIN_SIZE 属性は共に (1, 1) に初期化されます。 SFOTableCellTextReactor クラスでは、 SFLPROP_LEFTTOP_MARGIN_SIZE 属性と SFLPROP_RIGHTBOTTOM_MARGIN_SIZE 属性は共に (2, 1) に初期化されます。 |
[ public, const ] SFXRGBColor GetSelectedForegroundColor(Void);
この関数は、 階層プロパティから選択された状態の前景色を取得します。
![]() |
注意 |
---|---|
フォーカスが当たっている場合も、前景色はこの色になります。 |
SFLPROP_SELECTED_FOREGROUND_COLOR 属性を検索して、 SFXRGBColor 型の前景色を取得します。
SFLPROP_SELECTED_FOREGROUND_COLOR 属性キーが見つからないときは、 SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) [白色] が返却されます。
この関数は、 テーブルセルが選択されたときの振る舞いを行います。
テーブルセルの値を変更するなど何らかの処理を行ったときは、true を返却します。
SFOTableCellReactor::InvokeResultCell 関数を呼び出す以外に何も処理を行わない場合は、 false を返却します。
デフォルトの実装では、 SFOTableCellReactor::InvokeResultCell 関数を呼び出して、 常に false を返却します。
[ protected ] Void InvokeResultCell(Void);
この関数は、 テーブルセルが選択されたときの振る舞いが完了したときに呼び出します。
通常、SFOTableCellReactor::Handle 関数の最後の処理で呼び出します。
![]() |
SFOTableCellReactor::InvokeResult 関数の呼び出し場所 |
---|---|
SFOTableCellTextReactor クラスの編集モードでは、 SFOTableCellReactor::Handle 関数呼び出し終了後、 ネイティブテキスト入力画面に遷移するため、選択されたときの振る舞いが即座に完了しません。 この場合、SFOTableCellReactor::Handle 関数内で呼び出さずに、 テキストの編集が終わった時点でこの関数を呼び出すように実装されています。 |
[ public, const ] Bool IsEditable(Void);
この関数は、 編集可能であるかを判別します。
![]() |
注意 |
---|---|
SFLPROP_EDITABLE 属性を検索して、 テーブルセルが編集可能であるかどうかを判別します。 SFLPROP_EDITABLE キーが見つからない場合は、false が返却されます。 |
[ protected, virtual, const ] Bool IsWidgetAttachable(Void);
この関数は、 ウィジェットを取り付け可能かどうかを判定します。
デフォルトの実装では、常に false を返却します。
![]() |
true を返す場合 |
---|---|
例えば、SFOTableCellTextReactor クラスでは、 SFLPROP_TEXT_SCROLLABLE 属性が true であるとき、 SFYSingleTextWidget ウィジェットのテキストスクロール機能を使用するので true を返却します。 |
[ protected, virtual ] Void OffFocus( SInt32 row // フォーカスが外れたセルの行番号 SFYWidgetSmpPtr widget // フォーカス中に処理を委譲したウィジェット );
この関数は、 テーブルセルのフォーカスが外れたときの振る舞いを行います。
widget 引数にウィジェットのインスタンスを指定した場合は、 SFYResponder::Terminate 関数を呼び出し参照をはずします。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFOTableCellReactor::OffFocus(SInt32 row, SFYWidgetSmpPtr widget) { unused(row); if (widget != null) { if (*widget != null) { (*widget)->Terminate(); } widget->Release(); } return; }// SFOTableCellReactor::OffFocus //
[ protected, virtual ] Void OnFocus( SFXRectangleConstRef bound // セル領域 SFXAnyConstRef object // セルオブジェクト SInt32 row // フォーカスが当たったセルの行番号 SFYWidgetSmpPtr widget // フォーカス中に処理を委譲するウィジェット );
この関数は、 テーブルセルにフォーカスが当たったときの振る舞いを行います。
ウィジェットに振る舞いを委譲する場合は、 widget 引数に生成したウィジェットのインスタンスを指定します。
デフォルトの実装では何も行いません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFOTableCellReactor::OnFocus(SFXRectangleConstRef bound, SFXAnyConstRef object, SInt32 row, SFYWidgetSmpPtr widget) { unused(bound); unused(object); unused(row); unused(widget); return; }// SFOTableCellReactor::OnFocus //
[ protected, virtual, const ] Void Render( SFXGraphicsPtr graphics // グラフィックスオブジェクト SFXRectangleConstRef bound // テーブルセル領域 SFXAnyConstRef object // セルオブジェクト SInt32 row // 描画するセルの行番号 Bool active // セルの活性状態 Bool focus // セルのフォーカス状態 );
この関数は、 セルの領域内にセルオブジェクトの内容を活性状態、フォーカス状態にもとづいて描画します。
デフォルトの実装では何も行いません。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]() ![]() |