前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFOTableCellTextReactor
テーブルセルにテキストの描画・編集機能を提供するクラスです。
#include <SFOTableCellTextReactor.h.hpp>
class SFOTableCellTextReactor : public SFOTableCellReactor;
SFMTYPEDEFREFOBJECT(SFOTableCellTextReactor)
        

継承図

SFOTableCellTextReactor クラスの継承図

協調図

SFOTableCellTextReactor クラスの協調図

解説

SFOTableCellTextReactor クラスは、 SFXAnsiString 型、または SFXWideString 型のセルオブジェクトに対して、 テキストの描画や編集の機能を提供するテーブルセルリアクターです。

テキストの編集は、 SFOTableCellTextReactor::NewInstance 関数、または SFOTableCellTextReactor::SetEditor 関数で設定する ネイティブテキスト入力コントロールエディタによって行われます。

テーブルセルを選択(フォーカス)したときに、 テキストの長さがテーブルセルの幅よりも大きければ、 テキストは SFYSingleTextWidget クラスの機能を利用してスクロールします。

[Note] テキストの編集

テキストを編集するには、SFLPROP_EDITABLE 属性を true に設定する必要があります。 この属性が設定されていない場合は、false として扱われ、テキストは編集できません。

[Note] スクロールの抑制

テキストのスクロールを抑制するには、 SFLPROP_TEXT_SCROLLABLE 属性を false に設定する必要があります。 この属性が設定されていない場合は、true として扱われ、テキストはスクロールできます。

参照

SFOTableCellReactor | SFYSingleTextWidget

メンバ

コンストラクタ/デストラクタ
SFOTableCellTextReactor( Void )
SFOTableCellTextReactor クラスのコンストラクタです。
SFOTableCellTextReactor( SFXBaseEditorPtr editor )
SFOTableCellTextReactor クラスのコンストラクタです。
~SFOTableCellTextReactor
SFOTableCellTextReactor クラスのデストラクタです。
パブリック関数
SFXBaseEditorPtr GetEditor( Void )
ネイティブテキスト入力コントロールエディタを取得します。
AEETextInputMode GetInputMode( Void )
ネイティブテキスト入力コントロールの入力モードを取得します。
UInt16 GetMaximumLength( Void )
ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を取得します。
Bool GetPasswordMode( Void )
ネイティブテキスト入力コントロールのパスワードモードを取得します。
static
SFOTableCellTextReactorSmp
NewInstance( SFCErrorPtr exception = null )
新しいインスタンスを作成します。
static
SFOTableCellTextReactorSmp
NewInstance( SFXBaseEditorPtr editor , SFCErrorPtr exception = null )
新しいインスタンスを作成します。
Void SetEditor( SFXBaseEditorPtr param )
ネイティブテキスト入力コントロールエディタを設定します。
Void SetInputMode( AEETextInputMode param )
ネイティブテキスト入力の入力モードを設定します。
SFCError SetMaximumLength( UInt16 param )
ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を設定します。
Void SetPasswordMode( Bool param )
パスワードモードを設定します。
ValueRec GetProperty( UInt32 key , BoolPtr found = null , Bool recursive = true ) (SFOTableCellReactor から継承)
属性キーに対応する属性値を取得します。
Bool HasProperty( UInt32 key , Bool recursive = true ) (SFOTableCellReactor から継承)
指定された属性キーに対応する属性値が設定されているかどうかを判定します。
SFCError SetProperty( UInt32 key , ValueRec value ) (SFOTableCellReactor から継承)
属性キーに対応する属性値を設定します。
プロテクト関数
static
SFCError
Convert( SFXAnyConstRef object , SFXWideStringPtr result )
指定された SFXAny オブジェクトを SFXWideString 文字列に変換します。
Bool Handle( SFXAnyRef object , SInt32 row object )
テーブルセルが選択されたときにテキストを編集します。
SFCError Initialize( Void )
初期化を行います。
Bool IsWidgetAttachable( Void )
ウィジェットを取り付け可能かどうかを判定します。
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
SFCError
SetString( SFXWideStringConstRef text , SFXAnyPtr result )
指定された SFXWideString 文字列を SFXAny オブジェクトに変換します。
static
SFXRectangle
Align( SFXRectangleConstRef src , SFXRectangleConstRef ref , UInt32 alignment ) (SFOTableCellReactor から継承)
指定された矩形領域を基準となる矩形領域に基づいて整列した矩形領域を返します。
static
SFORefObjectSmp
Factory( SFORefObjectPtr object , SFCErrorPtr exception ) (SFORefObject から継承)
NewInstance 関数の実装を補助します。
UInt32 GetAlignment( Void ) (SFOTableCellReactor から継承)
アライメントを取得します。
SFXMargin GetMargin( Void ) (SFOTableCellReactor から継承)
テーブルセルの領域とセルの描画領域のマージンを取得します。
Void InvokeResultCell( Void ) (SFOTableCellReactor から継承)
テーブルセルの選択完了を知らせます。
Bool IsEditable( Void ) (SFOTableCellReactor から継承)
編集可能であるかどうかを判別します。
Void OffFocus( SInt32 row , SFYWidgetSmpPtr widget ) (SFOTableCellReactor から継承)
テーブルセルのフォーカスが外れたときの振る舞いを行います。

SFOTableCellTextReactor::SFOTableCellTextReactor
SFOTableCellTextReactor クラスのコンストラクタです。
[ protected, explicit ]
SFOTableCellTextReactor(Void);
[ protected, explicit ]
SFOTableCellTextReactor(
    SFXBaseEditorPtr editor   // ネイティブテキスト入力コントロールエディタ
);

解説

このコンストラクタでは、 editor 引数を指定することにより、 このテーブルセルリアクターのネイティブテキスト入力コントロールエディタを設定することが可能です。

editor 引数を指定しない場合、 エディタには SFYApplication::GetEditor 関数で得られる値が設定されます。

エディタはテキストの編集に使用されます。

[Note] 注意

このコンストラクタは SFOTableCellTextReactor::NewInstance 関数から間接的に呼び出されます。

参照

SFOTableCellTextReactor::NewInstance | SFOTableCellTextReactor::SetEditor | SFYApplication::GetEditor | SFXBaseEditor | SFYResponder


SFOTableCellTextReactor::~SFOTableCellTextReactor
SFOTableCellTextReactor クラスのデストラクタです。

解説

このデストラクタは、 何も行いません。


SFOTableCellTextReactor::Convert
指定された SFXAny オブジェクトを SFXWideString 文字列に変換します。
[ protected, static ]
SFCError Convert(
    SFXAnyConstRef object     // 変換元セルオブジェクト
    SFXWideStringPtr result   // 変換先文字列
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のときや、object 引数が変換できない型を有しているとき: SFERR_INVALID_PARAM
  • メモリ不足で失敗したとき: SFERR_NO_MEMORY

解説

この関数は、 指定された SFXAny オブジェクトを SFXWideString 文字列に変換します。

変換元の SFXAny オブジェクトは、 SFXAnsiString 型または SFXWideString 型の値を保持している必要があります。

SFXWideString 文字列は、result 引数に指定された場所にコピーされます。

[Note] 注意

この操作は、 SFOTableCellTextReactor::SetString 関数と逆の操作になります。

内部実装

この関数の内部実装は以下の通りです。

/*protected static */SFCError SFOTableCellTextReactor::Convert(SFXAnyConstRef object, SFXWideStringPtr result)
{
    SFCError                                    error(SFERR_INVALID_PARAM);

    if (result != null) {
        if (SFXAny::Contains(object, (SFXAnsiStringPtr)(null))) {
            error = result->Set(any_cast<SFXAnsiString>(object));
        }
        else if (SFXAny::Contains(object, (SFXWideStringPtr)(null))) {
            error = result->Set(any_cast<SFXWideString>(object));
        }
    }
    return error;
}// SFOTableCellTextReactor::Convert //

参照

SFXAny | SFXAnsiString | SFXWideString | SFOTableCellTextReactor::SetString


SFOTableCellTextReactor::GetEditor
ネイティブテキスト入力コントロールエディタを取得します。
[ public, const ]
SFXBaseEditorPtr GetEditor(Void);

戻り値

ネイティブテキスト入力コントロールエディタ(SFXBaseEditor)。

解説

この関数は、 ネイティブテキスト入力コントロールエディタを取得します。

参照

SFOTableCellTextReactor::SetEditor | SFXBaseEditor


SFOTableCellTextReactor::GetInputMode
ネイティブテキスト入力コントロールの入力モードを取得します。
[ public, const ]
AEETextInputMode GetInputMode(Void);

戻り値

ネイティブテキスト入力コントロールの入力モード(AEETextInputMode)。

解説

この関数は、 ネイティブテキスト入力コントロールに使用できるテキスト入力モードを取得します。

詳細は、BREW リファレンスの ITEXTCTL_GetInputMode() および AEETextInputMode の説明を参照してください。

参照

SFOTableCellTextReactor::SetInputMode | BREW API ITEXTCTL_GetInputMode | AEETextInputMode


SFOTableCellTextReactor::GetMaximumLength
ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を取得します。
[ public, const ]
UInt16 GetMaximumLength(Void);

戻り値

ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値。

解説

この関数は、 ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を取得します。

詳細は、BREW リファレンスの ITEXTCTL_SetMaxSize() の説明を参照してください。

参照

SFOTableCellTextReactor::SetMaximumLength | BREW API ITEXTCTL_SetMaxSize


SFOTableCellTextReactor::GetPasswordMode
ネイティブテキスト入力コントロールのパスワードモードを取得します。
[ public, const ]
Bool GetPasswordMode(Void);

戻り値

  • パスワードモードのとき: true
  • そうでないとき: false

解説

この関数は、 ネイティブテキスト入力コントロールのパスワードモードを取得します。

詳細は、BREW リファレンスの ITEXTCTL_SetProperties() および AEE ITextCtl のプロパティを参照してください。

参照

SFOTableCellTextReactor::SetPasswordMode | BREW API ITEXTCTL_SetProperties | BREW API AEE ITextCtl のプロパティ


SFOTableCellTextReactor::Handle
テーブルセルが選択されたときにテキストを編集します。
[ protected, virtual ]
Bool Handle(
    SFXAnyRef object    // セルオブジェクト
    SInt32 row object   // 選択されたセルの行番号
);

戻り値

  • テキストが編集される予定のとき: true
  • そうでないとき: false

解説

この関数は、 テーブルセルが選択されたときにテキストを編集します。

テキストが編集可であれば、ネイティブテキスト入力コントロールを起動してテキストの編集を行います。

関数の最後で SFOTableCellReactor::InvokeResultCell 関数を呼び出します。 ただし、ネイティブテキスト入力コントロールが起動された場合は、入力が終了するまで呼び出しは遅延されます。

内部実装

この関数の内部実装は以下の通りです。

/*protected virtual */Bool SFOTableCellTextReactor::Handle(SFXAnyRef object, SInt32 row)
{
    SFXWideString                               text;
    Bool                                        result(false);

    unused(row);
    if (_editor != null) {
        if (IsEditable()) {
            if (Convert(object, &text) == SFERR_NO_ERROR) {
                if (_editProperty.SetText(text) == SFERR_NO_ERROR) {
                    if (_editor->Open(&_editProperty, XALLBACK_INTERNAL(OnEditor)) == SFERR_NO_ERROR) {
                        _text = &object;
                        result = true;
                    }
                }
            }
        }
    }
    if (!result) {
        InvokeResultCell();
    }
    return result;
}// SFOTableCellTextReactor::Handle //

参照

SFOTableCellReactor::InvokeResultCell


SFOTableCellTextReactor::Initialize
初期化を行います。
[ protected, virtual ]
SFCError Initialize(Void);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMOERY

解説

この関数は、 (エラーが発生する可能性のある)初期化を行います。

デフォルトの実装では、 SFLPROP_LEFTTOP_MARGIN_SIZE 属性(セルの左上マージン)と SFLPROP_RIGHTBOTTOM_MARGIN_SIZE 属性(セルの右上マージン)を共に (2, 1) に設定します。

[Note] 注意

この関数は SFORefObject::Factory 関数内で呼ばれます。

具象クラス固有の初期化コードがあり、エラーが発生する可能性がある場合、 オーバーライドする必要があります。

以下の内部実装にあるように、 この関数は、親クラスの Initialize() 関数を先に呼び出して実装します。

内部実装

この関数の内部実装は以下の通りです。

/*protected */SFCError SFOTableCellTextReactor::Initialize(Void)
{
    static SFXSize::AtomRecConst                MARGINSIZE = {
        2, 1
    };
    SFCError                                    error;

    if ((error = SFOTableCellReactor::Initialize()) == SFERR_NO_ERROR) {
        if ((error = SetProperty(SFLPROP_LEFTTOP_MARGIN_SIZE, MARGINSIZE)) == SFERR_NO_ERROR) {
            error = SetProperty(SFLPROP_RIGHTBOTTOM_MARGIN_SIZE, MARGINSIZE);
        }
    }
    return error;
}// SFOTableCellTextReactor::Initialize //

参照

SFORefObject::Factory | SFOTableCellReactor::GetMargin


SFOTableCellTextReactor::IsWidgetAttachable
ウィジェットを取り付け可能かどうかを判定します。
[ protected, virtual, const ]
Bool IsWidgetAttachable(Void);

戻り値

  • ウィジェットを取り付け可能のとき: true
  • そうでないとき: false

解説

この関数は、 ウィジェットを取り付け可能かどうかを判定します。

SFLPROP_TEXT_SCROLLABLE 属性が true のとき、 または属性が設定されていないとき、 テキストのスクロール機能に SFYSingleTextWidget ウィジェットを使用するため、 true を返却します。その他のときは、false を返却します。

参照

SFYSingleTextWidget


SFOTableCellTextReactor::NewInstance
新しいインスタンスを作成します。
[ public, static ]
SFOTableCellTextReactorSmp NewInstance(
    SFCErrorPtr exception = null   // エラー値
);
[ public, static ]
SFOTableCellTextReactorSmp NewInstance(
    SFXBaseEditorPtr editor        // ネイティブテキスト入力コントロールエディタ
    SFCErrorPtr exception = null   // エラー値
);

引数

exception

関数内部で発生したエラー値を返します。

戻り値

  • 成功したとき: null 以外のポインタ
  • 失敗したとき: null ポインタ

解説

この関数は、SFOTableCellTextReactor インスタンスを作成します。

インスタンスの作成に成功した場合は null 以外のポインタを返します。 失敗した場合は、null ポインタを返します。

exception 引数を指定した場合、 この引数にはエラー値が返ります。

editor 引数を指定することにより、 このテーブルセルリアクターのネイティブテキスト入力コントロールエディタを設定することが可能です。

editor 引数を指定しない場合、 エディタには SFYApplication::GetEditor 関数で得られる値が設定されます。

使用例

以下は、SFOTableCellTextReactor インスタンスを生成するためのコードです。

SFOTableCellReactorSmp rtor;
SFCError error;

if ((rtor = SFOTableCellTextReactor::NewInstance(&error)) != null) {

    // 編集可に設定する
    rtor->SetProperty(SFLPROP_EDITABLE, true);

    // スクロール不可に設定する
    rtor->SetProperty(SFLPROP_TEXT_SCROLLABLE, false);

    // .. (省略) ..
}

参照

SFOTableCellTextReactor::SFOTableCellTextReactor | SFOTableCellTextReactor::SetEditor | SFYApplication::GetEditor | SFOTableCellTextReactor | SFXBaseEditor | SFYResponder


SFOTableCellTextReactor::OnFocus
テーブルセルにフォーカスが当たったときの振る舞いを行います。
[ protected, virtual ]
Void OnFocus(
    SFXRectangleConstRef bound   // セル領域
    SFXAnyConstRef object        // セルオブジェクト
    SInt32 row                   // フォーカスが当たったセルの行番号
    SFYWidgetSmpPtr widget       // フォーカス中に処理を委譲するウィジェット
);

解説

この関数は、 テーブルセルにフォーカスが当たったときの振る舞いを行います。

ウィジェットに振る舞いを委譲する場合は、 widget 引数に生成したウィジェットのインスタンスを指定します。

テキストスクロール可 (SFLPROP_TEXT_SCROLLABLE 属性が true、または設定されていない) のとき、 SFYSingleTextWidget クラスにスクロールの処理を委譲します。

内部実装

この関数の内部実装は以下の通りです。

/*protected virtual */Void SFOTableCellTextReactor::OnFocus(SFXRectangleConstRef bound, SFXAnyConstRef object, SInt32 row, SFYWidgetSmpPtr widget)
{
    UInt32                                      alignment;
    SFXWideString                               text;
    SFYSingleTextWidgetSmp                      txwidget;
    SFCError                                    error(SFERR_NO_ERROR);

    unused(row);
    if (widget != null) {
        if (IsWidgetAttachable()) {
            if (Convert(object, &text) == SFERR_NO_ERROR) {
                alignment = GetAlignment();
                txwidget = SFYSingleTextWidget::NewInstance(&error);
                if (txwidget != null) {
                    if ((error = txwidget->SetText(text)) == SFERR_NO_ERROR) {
                        txwidget->SetPropertyTransparent(true);
                        txwidget->SetFont(GetFont());
                        txwidget->SetTextColor(GetSelectedForegroundColor());
                        txwidget->SetHorizontalAlign(ConvertHorizontalAlign(alignment));
                        txwidget->SetVerticalAlign(ConvertVerticalAlign(alignment));
                        txwidget->SetScrollDirection(GetScrollDirection());
                        txwidget->SetScrollInterval(GetScrollInterval());
                        txwidget->SetScrollStep(GetScrollStep());
                        txwidget->SetWaitInterval(GetWaitInterval());
                        txwidget->SetRealBound(SFXRectangle(bound).Deflate(GetMargin()));
                        txwidget->SetState(true, true, true, true);
                        txwidget->StartScroll();
                    }
                }
                if (error == SFERR_NO_ERROR) {
                    *widget = txwidget;
                }
                else {
                    widget->Release();
                }
            }
        }
    }
    else {
        error = SFERR_INVALID_PARAM;
    }
    return;
}// SFOTableCellTextReactor::OnFocus //

参照

SFYSingleTextWidget


SFOTableCellTextReactor::Render
テーブルセルにテキストを描画します。
[ protected, virtual, const ]
Void Render(
    SFXGraphicsPtr graphics      // グラフィックスオブジェクト
    SFXRectangleConstRef bound   // テーブルセル領域
    SFXAnyConstRef object        // セルオブジェクト
    SInt32 row                   // 描画するセルの行番号
    Bool active                  // セルの活性状態
    Bool focus                   // セルのフォーカス状態
);

解説

この関数は、 セルの領域内にテキストを描画します。

テーブルセルの活性状態、フォーカス状態にもとづいて描画するテキストの色を変化させます。

使用例

この関数の内部実装は以下の通りです。

/*protected virtual */Void SFOTableCellTextReactor::Render(SFXGraphicsPtr graphics, SFXRectangleConstRef bound, SFXAnyConstRef object, SInt32 row, Bool active, Bool focus) const
{
    SFXRGBColor                                 foreColor;
    SFXWideString                               text;

    unused(row);
    if (Convert(object, &text) == SFERR_NO_ERROR) {
        foreColor.Set(focus ? GetSelectedForegroundColor() : GetForegroundColor());
        if (!active) {
            if (foreColor.GetBrightness() > 0x7F) {
                foreColor.SubRGB(0x44);
            }
            else {
                foreColor.AddRGB(0x44);
            }
        }
        graphics->SetFont(GetFont());
        graphics->DrawSingleText(text, SFXRectangle(bound).Deflate(GetMargin()), foreColor, GetAlignment());
    }
    return;
}// SFOTableCellTextReactor::Render //

/*private */SFXRGBColor SFOTableCellTextReactor::GetForegroundColor(Void) const
{
    static SFXRGBColor::AtomRecConst            BLACK = {
        {{0x00, 0x00, 0x00, 0x00}}
    };
    Bool                                        found;
    SFXRGBColor                                 result;

    result = GetProperty(SFLPROP_FOREGROUND_COLOR, &found).color;
    if (!found) {
        result.Set(BLACK);
    }
    return result;
}// SFOTableCellTextReactor::GetForegroundColor //

/*private */SFXRGBColor SFOTableCellTextReactor::GetSelectedForegroundColor(Void) const
{
    static SFXRGBColor::AtomRecConst            WHITE = {
        {{0x00, 0xFF, 0xFF, 0xFF}}
    };
    Bool                                        found;
    SFXRGBColor                                 result;

    result = GetProperty(SFLPROP_SELECTED_FOREGROUND_COLOR, &found).color;
    if (!found) {
        result.Set(WHITE);
    }
    return result;
}// SFOTableCellTextReactor::GetSelectedForegroundColor //

SFOTableCellTextReactor::SetEditor
ネイティブテキスト入力コントロールエディタを設定します。
[ public ]
Void SetEditor(
    SFXBaseEditorPtr param   // ネイティブテキスト入力コントロールエディタ
);

解説

この関数は、 ネイティブテキスト入力コントロールエディタを設定します。

デフォルト: SFYApplication::GetEditor 関数で取得できるアプリケーションクラスに設定されたテキスト入力コントロール処理用エディタ (SFXEditor インスタンス)。

[Note] 注意

テーブルセルが編集可能である場合に限り有効です。

参照

SFOTableCellTextReactor::GetEditor | SFOTableCellTextReactor::NewInstance | SFOTableCellTextReactor::SFOTableCellTextReactor | SFYApplication::GetEditor | SFOTableCellReactor::IsEditable | SFXBaseEditor | SFXEditor


SFOTableCellTextReactor::SetInputMode
ネイティブテキスト入力の入力モードを設定します。
[ public ]
Void SetInputMode(
    AEETextInputMode param   // 設定する入力モード
);

解説

この関数は、 ネイティブテキスト入力コントロールに使用できるテキスト入力モードを設定します。

詳細は、BREW リファレンスの ITEXTCTL_SetInputMode() および AEETextInputMode の説明を参照してください。

デフォルト値: AEE_TM_CURRENT(現在アクティブな入力モードを指定する)。

[Note] 注意

テーブルセルが編集可能である場合に限り有効です。

参照

SFOTableCellTextReactor::GetInputMode | BREW API ITEXTCTL_SetInputMode | AEETextInputMode


SFOTableCellTextReactor::SetMaximumLength
ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を設定します。
[ public ]
SFCError SetMaximumLength(
    UInt16 param   // 設定する文字数
);

解説

この関数は、 ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を設定します。

詳細は、BREW リファレンスの ITEXTCTL_SetMaxSize() の説明を参照してください。

デフォルト値: SINT16_MAXIMUM - 1。

[Note] 注意

テーブルセルが編集可能である場合に限り有効です。

参照

SFOTableCellTextReactor::GetMaximumLength | BREW API ITEXTCTL_SetMaxSize


SFOTableCellTextReactor::SetPasswordMode
パスワードモードを設定します。
[ public ]
Void SetPasswordMode(
    Bool param   // 設定する値(入力文字列を *** で表示するなら true、さもなければ false)
);

解説

この関数は、 引数が true の場合、ネイティブテキスト入力コントロールのプロパティ値に TP_PASSWORD を設定します。

このとき、入力した文字はすべて'*'(アスタリスク)で表示されます。また、実際の文字列はバッファして管理されます。

詳細は、BREW リファレンスの ITEXTCTL_SetProperties() および AEE ITextCtl のプロパティを参照してください。

デフォルト値: false

[Note] 注意

テーブルセルが編集可能である場合に限り有効です。

参照

SFXEditProperty::GetPasswordMode | BREW API ITEXTCTL_SetProperties | BREW API AEE ITextCtl のプロパティ


SFOTableCellTextReactor::SetString
指定された SFXWideString 文字列を SFXAny オブジェクトに変換します。
[ protected, static ]
SFCError SetString(
    SFXWideStringConstRef text   // コピー元文字列
    SFXAnyPtr result             // コピー先セルオブジェクト
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のときや、result 引数の有している型が変換できる型でないとき: SFERR_INVALID_PARAM
  • メモリ不足で失敗したとき: SFERR_NO_MEMORY

解説

この関数は、 指定された SFXWideString 文字列を SFXAny オブジェクトに変換します。

SFXAny オブジェクトは、result 引数に指定された場所にコピーされます。

[Note] 注意

この操作は、 SFOTableCellTextReactor::Convert 関数と逆の操作になります。

内部実装

この関数の内部実装は以下の通りです。

/*protected static */SFCError SFOTableCellTextReactor::SetString(SFXWideStringConstRef text, SFXAnyPtr result)
{
    SFCError                                    error(SFERR_INVALID_PARAM);

    if (result != null) {
        if (SFXAny::Contains(*result, (SFXAnsiStringPtr)(null))) {
            error = any_cast<SFXAnsiString>(result)->Set(text);
        }
        else if (SFXAny::Contains(*result, (SFXWideStringPtr)(null))) {
            error = any_cast<SFXWideString>(result)->Set(text);
        }
    }
    return error;
}// SFOTableCellTextReactor::SetString //

参照

SFXAny | SFXAnsiString | SFXWideString | SFOTableCellTextReactor::Convert