前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYMultipleEditWidget
複数行の編集可能なテキストを表示するウィジェットです。
#include <SFYMultipleEditWidget.h.hpp>
class SFYMultipleEditWidget : public SFYWidget;
SFMTYPEDEFCLASS(SFYMultipleEditWidget)

継承図

SFYMultipleEditWidget クラスの継承図

協調図

SFYMultipleEditWidget クラスの協調図

解説

■ 仕様と使い方

SFYMultipleEditWidget は、 複数行テキストの編集に必要な機能だけが実装されているレスポンダです。 通常、複数行テキストの編集を扱うレスポンダで内部的に保持する子レスポンダとして使います。

たとえば、SFYMultipleEditWidgetSFZMultipleEditLabelControlSFZMultipleEditBoxControl クラスの複数行テキストの編集を扱うコントロールの子レスポンダとして内部的に利用されます。

複数行テキストを編集するこれらのコントロールでは、 複数行テキストの入力や設定、色の設定、フォントの設定、配置、スクロールなどの処理はすべて SFYMultipleEditWidget に委譲して行われます。

複数行テキストを編集する必要がある場合、SFYMultipleEditWidget を利用すれば、 その処理を記述することなく簡単に実装することが可能です。 また、SFYMultipleEditWidget に複数行テキストの編集処理が一元化されるので保守性の優れたコードになります。

[Note] SFYMultipleEditWidget の内部処理

SFYMultipleEditWidget が行うテキスト入力と描画は、 それぞれ SFYMultipleEditWidget が内部で保持する SFXEditorSFYMultipleTextWidget に委譲されて処理されます。

[Note] 使用するときの状態の値

このクラスを利用するときは、 可視状態:ON、活性状態:ON、操作可能状態:OFF、フォーカス状態:OFF の状態に設定します。

通常、このクラスはキーイベントに応答しないクラスとして使用します。

[Caution] 透過属性のデフォルト値

このクラスの透過属性のデフォルト値は true なので、 SFYResponder::SetPropertyTransparent 関数で透過属性を false に設定しない限り、 SFYWidget::SetBackgroundColor 関数で設定した色で背景が塗り潰されることはありません。

[Caution] 仮想領域

SFYMultipleEditWidget では、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] > [実領域の横幅]

のとき、[仮想領域の横幅]よりも長い行はこの横幅の長さに合わせて折り返して描画されるので、 左端、右端、または両端のテキストを表示できません。左右にスクロールして表示することもできません。

[仮想領域の縦幅] ≧ [複数行テキストの縦幅] > [実領域の縦幅]

のときは、複数行テキストは画面上にすべて表示されませんが、上下キーを押下してもスクロールしません。

[Caution] 引数(矩形領域)を指定しないで GetSuitableBound 関数を呼び出すときの注意

このレスポンダの SFYResponder::GetSuitableBound 関数を呼び出すときに引数(矩形領域)を指定しない場合は、 予め SFYResponder::SetRealBound 関数を使用して実領域(=ローカル領域※)を設定する必要があります。 設定された実領域の横幅は領域計算に必要なヒント値として利用されます。 通常、実領域の横幅には使用しているフォントの横幅以上の値を設定します。

仮想領域を設定しない限り、 実領域はローカル領域と同じです。

参照: 複数行のテキストを表示するレスポンダに最適な大きさを取得する

参照

SFZMultipleEditLabelControl | SFZMultipleEditBoxControl | SFYMultipleTextWidget | SFXEditor | 実領域 | ローカル領域 | 仮想領域 | 複数行のテキストを表示するレスポンダに最適な大きさを取得する

メンバ

コンストラクタ/デストラクタ
SFYMultipleEditWidget( Void )
SFYMultipleEditWidget クラスのコンストラクタです。
~SFYMultipleEditWidget( Void )
SFYMultipleEditWidget クラスのデストラクタです。
パブリック関数
SFCError Edit( Void )
ネイティブテキスト入力に遷移します(FEP を起動します)。
AEEFont GetFont( Void )
フォントを取得します。
SFXSizeConstRef GetFontSize( Void )
フォントの大きさを取得します。
HorizontalEnum GetHorizontalAlign( Void )
水平アライメントの値を取得します。
AEETextInputMode GetInputMode( Void )
テキスト入力モードを取得します。
UInt16 GetMaximumLength( Void )
最大文字入力数を取得します。
Bool GetPasswordMode( Void )
パスワードモードの値を取得します。
AEECLSID GetSFBMenuCtlClassID( Void )
[非推奨 (廃止予定 API)] SFBMenuCtl のクラス ID を取得します。
AEECLSID GetSFBTextCtlClassID( Void )
[非推奨 (廃止予定 API)] SFBTextCtl のクラス ID を取得します。
SInt16 GetScrollStep( Void )
スクロール移動量を取得します。[単位:ピクセル]
SFXWideStringConstRef GetText( Void )
テキストを取得します。
SFXRGBColorConstRef GetTextColor( Void )
テキストの色を取得します。
SFXSizeConstRef GetTextSize( Void )
テキストの大きさを取得します。
VerticalEnum GetVerticalAlign( Void )
垂直アライメントの値を取得します。
static
SFYMultipleEditWidgetSmp
NewInstance( SFCErrorPtr exception = null )
新しいインスタンスを作成します。
Bool PageDown( Void )
複数行テキストを下方向に 1 ページ分スクロールします。
Bool PageUp( Void )
複数行テキストを上方向に 1 ページ分スクロールします。
Bool ScrollDown( Void )
複数行テキストを下方向にスクロールステップ分スクロールします。
Bool ScrollUp( Void )
複数行テキストを上方向にスクロールステップ分スクロールします。
Void SetFont( AEEFont param )
フォントを設定します。
Void SetHorizontalAlign( HorizontalEnum param )
水平アライメントを設定します。
Void SetInputMode( AEETextInputMode param )
テキスト入力モードを設定します。
SFCError SetMaximumLength( UInt16 param )
最大文字入力数を設定します。
SFCError SetPasswordMode( Bool param )
パスワードモードを設定します。
Void SetSFBMenuCtlClassID( AEECLSID param )
[非推奨 (廃止予定 API)] SFBMenuCtl のクラス ID を設定します。
Void SetSFBTextCtlClassID( AEECLSID param )
[非推奨 (廃止予定 API)] SFBTextCtl のクラス ID を設定します。
Void SetScrollStep( SInt16 param )
スクロール移動量を設定します。[単位:ピクセル]
SFCError SetText( SFXPathConstRef path , UInt16 id )
テキストを設定します。
SFCError SetText( SFXWideStringConstRef param )
テキストを設定します。
Void SetTextColor( SFXRGBColorConstRef param )
テキストの色を設定します。
Void SetVerticalAlign( VerticalEnum param )
垂直アライメントを設定します。
Bool SnapAlign( Void )
複数行テキストのスクロール位置を初期状態に戻します。
Bool SnapDown( Void )
複数行テキストを下端までスクロールします。
Bool SnapUp( Void )
複数行テキストを上端までスクロールします。
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
SFYResponderSmp GetChildBack( Void ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SInt32 GetChildCount( Void ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SFYResponderSmp GetChildForward( SInt32 index ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Void ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYDistributerPtr GetDistributer( Void ) (SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
SFXRectangle GetGlobalBound( Void ) (SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
UInt32 GetID( Void ) (SFYResponder から継承)
このレスポンダの ID を取得します。
SFXRectangle GetLocalBound( Void ) (SFYResponder から継承)
このレスポンダのローカル領域を取得します。
SInt32 GetNthBackward( Void ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( UInt32 id ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( Void ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( UInt32 id ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SFYResponderSmp GetParent( Void ) (SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
Bool GetPropertyTransparent( Void ) (SFYResponder から継承)
このレスポンダの透過属性を取得します。
SFXRectangleConstRef GetRealBound( Void ) (SFYResponder から継承)
このレスポンダの実領域を取得します。
VoidPtr GetReference( Void ) (SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
SFYRendererPtr GetRenderer( Void ) (SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
SFYResponderSmp GetRoot( Void ) (SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
Bool GetStateActive( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの活性状態を取得します。
Bool GetStateEnable( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの操作可能状態を取得します。
Bool GetStateFocus( Bool inherit = false ) (SFYResponder から継承)
このレスポンダのフォーカス状態を取得します。
Bool GetStateValid( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの有効状態を取得します。
Bool GetStateVisible( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの可視状態を取得します。
SFXRectangle GetSuitableBound( Void ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef rectangle ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef param , HorizontalEnum horizontal , VerticalEnum vertical ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXMargin GetSuitableMargin( Void ) (SFYResponder から継承)
このレスポンダのフレーム余白領域を取得します。
SFCType GetType( Void ) (SFYResponder から継承)
このレスポンダのタイプを取得します。
SFXRectangleConstRef GetVirtualBound( Void ) (SFYResponder から継承)
このレスポンダの仮想領域を取得します。
Bool HasFrame( Void ) (SFYResponder から継承)
このレスポンダがコンテントレスポンダであるかどうかを判定します。
Void Initialize( Void ) (SFYResponder から継承)
このレスポンダを初期化します。
Void Invalidate( Void ) (SFYResponder から継承)
指定された領域を再描画領域に登録します。
Void Invalidate( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域を再描画領域に登録します。
Void InvokeBackward( SFXEventConstRef event , Bool overload , BoolPtr result = null ) (SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します (ハンドラは登録順に起動されます)。
Void InvokeForward( SFXEventConstRef event , Bool overload , BoolPtr result = null ) (SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します (ハンドラは登録の逆順に起動されます)。
Bool IsBack( Void ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( UInt32 id ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsFrame( Void ) (SFYResponder から継承)
このレスポンダがアタッチメントフレームであるかどうかを判定します。
Bool IsFront( Void ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( UInt32 id ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsRoot( Void ) (SFYResponder から継承)
このレスポンダがルートレスポンダであるかどうかを判定します。
SFCError Recover( Void ) (SFYResponder から継承)
デバイス画面保存用ビットマップを使用してこのレスポンダとレスポンダ空間との交差領域を復元します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::RuleRecConstRef rule ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::OrderEnum order , SFYTracer::StateEnum state , Bool overload ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::OrderEnumConstPtr order , SFYTracer::StateEnumConstPtr state , BoolConstPtr overload , SInt32 length ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError Render( Bool force = false ) (SFYResponder から継承)
このレスポンダ以下のレスポンダツリーをレスポンダ空間に再描画します。
Void SetBackgroundColor( SFXRGBColorConstRef param ) (SFYWidget から継承)
背景の色を設定します。
Void SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
SFCError SetParent( SFYResponderSmpConstRef param ) (SFYResponder から継承)
指定されたレスポンダをこのレスポンダの親レスポンダに設定します。
Void SetProperty( Bool transparent ) (SFYResponder から継承)
指定された属性をこのレスポンダに設定します。
Void SetPropertyTransparent( Bool param ) (SFYResponder から継承)
指定された透過属性をこのレスポンダに設定します。
Void SetRealBound( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域をこのレスポンダの実領域に設定します。
Void SetReference( VoidPtr param ) (SFYResponder から継承)
指定された値をこのレスポンダのリファレンスに設定します。
Void SetRenderer( SFYRendererPtr param ) (SFYResponder から継承)
指定された描画エンジンをこのレスポンダに設定します。
Void SetState( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
指定された値をこのレスポンダの可視、活性、操作可能、フォーカスの各状態フラグに設定します。
Void SetStateActive( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの活性状態フラグに設定します。
Void SetStateEnable( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの操作可能状態フラグに設定します。
Void SetStateFocus( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダのフォーカス状態フラグに設定します。
Void SetStateVisible( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの可視状態フラグに設定します。
Void SetVirtualBound( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域をこのレスポンダの仮想領域に設定します。
SFCError Snapshot( SFBBitmapSmpConstRef bitmap ) (SFYResponder から継承)
デバイス画面保存用ビットマップからこのレスポンダとレスポンダ空間との交差領域のスナップショットを取得します。
Void Terminate( Void ) (SFYResponder から継承)
このレスポンダの終了処理を行います。
Void ToBack( Void ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToFront( Void ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToNthBackward( SInt32 index ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterTracer( SFXEventRangeConstRef range ) (SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
Void UnregisterTracer( SFXEventRangeConstPtr range , SInt32 length ) (SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
プロテクト関数
SFYMultipleTextWidgetSmpConstRef GetWidget( Void )
複数行テキスト描画用に内部で保持しているテキストウィジェットを取得します。
Void HandleBoundOptimize( SFXRectanglePtr rectangle )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundReal( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleBoundRequest( SFXRectanglePtr rectangle )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleRenderRequest( SFXGraphicsPtr graphics ) (SFYWidget から継承)
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFYMultipleEditWidget クラスを表す定数です。
DefaultEnum
各種パラメータのデフォルト値を表します。
HorizontalEnum
水平方向のアライメントを表す定数です。
VerticalEnum
垂直方向のアライメントを表す定数です。

SFYMultipleEditWidget::SFYMultipleEditWidget
SFYMultipleEditWidget クラスのコンストラクタです。
[ protected, explicit ]
SFYMultipleEditWidget(Void);

解説

このコンストラクタは、 以下の初期化処理を行います。

  1. タイプを "+med" に設定します。
  2. 透過属性を "true" に設定します。
  3. ネイティブテキスト入力の入力モードを AEE_TM_CURRENT に設定します。
  4. ネイティブテキスト入力コントロールがサポートするテキストサイズの最大値を "SINT16_MAXIMUM - 1" に設定します。
  5. パスワードモードを false に設定します。
  6. テキスト描画用に内部で子レスポンダとして保持する SFYMultipleTextWidget インスタンスを生成します。
  7. テキスト描画用に内部で子レスポンダとして保持する SFYMultipleTextWidget インスタンスの状態を「可視+活性+操作不能+非フォーカス」に設定します。
  8. テキストの文字列を ""[空文字列] に設定します。
  9. テキストの色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  10. テキストのフォントを AEE_FONT_NORMAL に設定します。
  11. テキストの水平アライメントを SFYMultipleTextWidget::DEFAULT_HORIZONTAL に設定します。
  12. テキストの垂直アライメントを SFYMultipleTextWidget::DEFAULT_VERTICAL に設定します。
  13. テキストのスクロール移動量を SFYMultipleTextWidget::DEFAULT_STEP に設定します。

内部実装

このコンストラクタの内部実装は以下の通りです。

/*protected */SFYMultipleEditWidget::SFYMultipleEditWidget(Void) static_throws
{
    static SFXEventRange::AtomRecConst          crange[] = {
        { SFEVT_RESPONDER_STYLE,  SFEVT_RESPONDER_STYLE,          SFP16_BEGIN,            SFP16_END}
    };
    SFYHandler::RuleRec                         crule[lengthof(crange)];
    SFCError                                    error;

    if (static_try()) {
        SetType(CODE_TYPE);
        if ((_editor = SFYApplication::GetEditor()) != null) {
            if ((_widget = SFYMultipleTextWidget::NewInstance(&error)) != null) {
                crule[0].spp = XANDLER_FUNCTION(OnWidgetStyle);
                crule[0].reference = this;
                static_throw(_widget->RegisterHandler(atomic_cast(crange), crule, lengthof(crange)));
                if (static_try()) {
                    static_throw(_widget->SetParent(GetThis()));
                    if (static_try()) {
                        static_throw(_text.Set(_property.GetText()));
                        if (static_try()) {
                            static_throw(SetWidgetText(_text, _property.GetPasswordMode()));
                            if (static_try()) {
                                SetPropertyTransparent(true);
                                _widget->SetState(true, true, false, false);
                                _maximum = _property.GetMaximumLength();
                                Relocate();
                            }
                        }
                    }
                }
            }
            else {
                static_throw(error);
            }
        }
        else {
            static_throw(SFERR_INVALID_STATE);
        }
    }
}// SFYMultipleEditWidget::SFYMultipleEditWidget //

/*private */SFCError SFYMultipleEditWidget::SetWidgetText(SFXWideStringConstRef text, Bool password)
{
    SFXWideString                               string;
    SFCError                                    error(SFERR_NO_ERROR);

    if (password) {
        if ((error = string.Set(text)) == SFERR_NO_ERROR) {
            #if defined TARGET_LANGUAGE_JAPANESE
            error = SFXShiftJIS::ToPassword(&string);
            #else
            string.Fill(PASSWORD_ASCII);
            #endif
            if (error == SFERR_NO_ERROR) {
                error = _widget->SetText(string);
            }
        }
    }
    else {
        error = _widget->SetText(text);
    }
    return error;
}// SFYMultipleEditWidget::SetWidgetText //

/*private */Void SFYMultipleEditWidget::Relocate(Void)
{
    _widget->SetRealBound(GetLocalBound());
    return;
}// SFYMultipleEditWidget::Relocate //

参照

SFYResponder::SetType | SFYMultipleEditWidget::CodeEnum | SFYResponder::SetPropertyTransparent | SFYMultipleEditWidget::SetInputMode | SFYMultipleEditWidget::SetMaximumLength | SFYMultipleEditWidget::SetPasswordMode | SFYMultipleEditWidget::GetWidget | SFYResponder::SetParent | SFYResponder::SetState | SFYMultipleEditWidget::SetText | SFYMultipleEditWidget::SetFont | SFYMultipleEditWidget::SetTextColor | SFYMultipleEditWidget::SetHorizontalAlign | SFYMultipleEditWidget::SetVerticalAlign | SFYMultipleEditWidget::SetScrollStep | SFYMultipleTextWidget::NewInstance | SFYMultipleTextWidget::HorizontalEnum | SFYMultipleTextWidget::VerticalEnum | SFYMultipleTextWidget::DefaultEnum | SFYMultipleTextWidget | SFXRGBColor | タイプ | 属性 | 状態


SFYMultipleEditWidget::~SFYMultipleEditWidget
SFYMultipleEditWidget クラスのデストラクタです。
[ protected, virtual ]
virtual ~SFYMultipleEditWidget(Void);

解説

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

内部実装

このデストラクタの内部実装は以下の通りです。

/*protected virtual */SFYMultipleEditWidget::~SFYMultipleEditWidget(Void)
{
}// SFYMultipleEditWidget::~SFYMultipleEditWidget //

SFYMultipleEditWidget::Edit
ネイティブテキスト入力に遷移します(FEP を起動します)。
[ public ]
SFCError Edit(Void);

戻り値

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

解説

この関数は、ネイティブテキスト入力に遷移します(FEP を起動します)。

内部実装

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

// テキスト入力コントロールに遷移する関数
/*public */SFCError SFYMultipleEditWidget::Edit(Void)
{
    SFCError  error(SFERR_NO_ERROR);

    // テキスト入力コントロールのテキストサイズの最大値を設定する
    if ((error = _property.SetMaximumLength(_maximum)) == SFERR_NO_ERROR) { 

        // テキスト入力コントロールの初期値を設定する
        if ((error = _property.SetText(_text)) == SFERR_NO_ERROR) { 

            // テキスト入力コントロールを起動する(標準 BREW に含まれる ITextCtl)
            // OnEditor は、テキスト入力コントロール終了時に起動されるコールバック関数
            error = _editor.Open(XALLBACK_INTERNAL(OnEditor));
        }
    }

    return error;
}// SFYMultipleEditWidget::Edit //

/*private */XALLBACK_IMPLEMENT_SFXEDITOR(SFYMultipleEditWidget, OnEditor, context)
{
    SFCError                                    error;

    if ((error = context) == SFERR_NO_ERROR) {

        if ((error = SetTextMaximumLength(_property.GetText(), _property.GetMaximumLength())) == SFERR_NO_ERROR) {

            InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, 0), false);
        }
    }
    if (error != SFERR_NO_ERROR) {

        InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ERROR, error), false);
    }
    return;
}// XALLBACK_IMPLEMENT_SFXEDITOR(SFYMultipleEditWidget, OnEditor) //

参照

SFXEditor::Open


SFYMultipleEditWidget::GetFont
フォントを取得します。
[ public, const ]
AEEFont GetFont(Void);

戻り値

フォント。

解説

この関数は、フォントを取得します。

参照

SFYMultipleEditWidget::SetFont | BREW API AEEFont


SFYMultipleEditWidget::GetFontSize
フォントの大きさを取得します。
[ public, const ]
SFXSizeConstRef GetFontSize(Void);

戻り値

フォントの大きさ。

解説

この関数は、フォントの大きさを取得します。

設定されているフォントの半角 1 文字分(' ' で計算)の大きさを取得します。

参照

SFYMultipleEditWidget::SetFont | BREW API AEEFont


SFYMultipleEditWidget::GetHorizontalAlign
水平アライメントの値を取得します。
[ public, const ]
HorizontalEnum GetHorizontalAlign(Void);

戻り値

水平アライメントの値。

解説

この関数は、水平アライメントの値を取得します。

参照

SFYMultipleEditWidget::SetHorizontalAlign | SFYMultipleEditWidget::HorizontalEnum


SFYMultipleEditWidget::GetInputMode
テキスト入力モードを取得します。
[ public, const ]
AEETextInputMode GetInputMode(Void);

戻り値

テキスト入力モード。

解説

この関数は、テキスト入力モードを取得します。

参照

SFYMultipleEditWidget::SetInputMode | BREW API AEETextInputMode


SFYMultipleEditWidget::GetMaximumLength
最大文字入力数を取得します。
[ public, const ]
UInt16 GetMaximumLength(Void);

戻り値

最大文字入力数。

解説

この関数は、最大文字入力数を取得します。

参照

SFYMultipleEditWidget::SetMaximumLength


SFYMultipleEditWidget::GetPasswordMode
パスワードモードの値を取得します。
[ public, const ]
Bool GetPasswordMode(Void);

戻り値

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

解説

この関数は、パスワードモードの値を取得します。

参照

SFYMultipleEditWidget::SetPasswordMode


SFYMultipleEditWidget::GetSFBMenuCtlClassID
[非推奨 (廃止予定 API)] SFBMenuCtl のクラス ID を取得します。
[ public, const ]
AEECLSID GetSFBMenuCtlClassID(Void);

解説

[Note] 廃止予定

この API は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。

SFYApplication::GetEditor 関数を呼び出してテキスト入力コントロールエディタを取得し、 このエディタに対して SFXBaseEditor::GetSFBMenuCtlClassID 関数を呼び出して取得することを推奨します。

参照

SFYMultipleEditWidget::SetSFBMenuCtlClassID | SFBMenuCtl


SFYMultipleEditWidget::GetSFBTextCtlClassID
[非推奨 (廃止予定 API)] SFBTextCtl のクラス ID を取得します。
[ public, const ]
AEECLSID GetSFBTextCtlClassID(Void);

解説

[Note] 廃止予定

この API は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。

SFYApplication::GetEditor 関数を呼び出してテキスト入力コントロールエディタを取得し、 このエディタに対して SFXBaseEditor::GetSFBTextCtlClassID 関数を呼び出して取得することを推奨します。

参照

SFYMultipleEditWidget::SetSFBTextCtlClassID | SFBTextCtl


SFYMultipleEditWidget::GetScrollStep
スクロール移動量を取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetScrollStep(Void);

戻り値

スクロール移動量。[単位:ピクセル]

解説

この関数は、スクロール移動量を取得します。[単位:ピクセル]

参照

SFYMultipleEditWidget::SetScrollStep


SFYMultipleEditWidget::GetText
テキストを取得します。
[ public, const ]
SFXWideStringConstRef GetText(Void);

戻り値

テキスト。

解説

この関数は、テキストを取得します。

参照

SFYMultipleEditWidget::SetText


SFYMultipleEditWidget::GetTextColor
テキストの色を取得します。
[ public, const ]
SFXRGBColorConstRef GetTextColor(Void);

戻り値

テキストの色。

解説

この関数は、テキストの色を取得します。

参照

SFYMultipleEditWidget::SetTextColor | SFXRGBColor


SFYMultipleEditWidget::GetTextSize
テキストの大きさを取得します。
[ public, const ]
SFXSizeConstRef GetTextSize(Void);

戻り値

テキストの大きさ。

解説

この関数は、テキストの大きさを取得します。

設定されているフォントで描画した場合のテキストの大きさを取得します。

参照

SFYMultipleEditWidget::SetFont | BREW API AEEFont


SFYMultipleEditWidget::GetVerticalAlign
垂直アライメントの値を取得します。
[ public, const ]
VerticalEnum GetVerticalAlign(Void);

戻り値

垂直アライメントの値。

解説

この関数は、垂直アライメントの値を取得します。

参照

SFYMultipleEditWidget::SetVerticalAlign | SFYMultipleEditWidget::VerticalEnum


SFYMultipleEditWidget::GetWidget
複数行テキスト描画用に内部で保持しているテキストウィジェットを取得します。
[ protected, const ]
SFYMultipleTextWidgetSmpConstRef GetWidget(Void);

戻り値

複数行テキスト描画用に子レスポンダとして内部で保持する SFYMultipleTextWidget インスタンス。

解説

この関数は、 複数行テキスト描画用に子レスポンダとして内部で保持する SFYMultipleTextWidget インスタンスを取得します。

複数行テキストの描画は、SFYMultipleTextWidget インスタンスに委譲して処理します。

参照

SFYMultipleTextWidget


SFYMultipleEditWidget::HandleBoundOptimize
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
[ protected, virtual, const ]
Void HandleBoundOptimize(
    SFXRectanglePtr rectangle   // 矩形
);

解説

この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] を受信したときに呼び出されます。

引数 rectangle で指定した矩形領域に収まる範囲内で、レスポンダの最適な領域を計算します。

計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。

デフォルトの実装は、以下のサイズを返します。

  1. 返される横幅:
    • w >= sw の場合 : sw
    • sw > w >= fw の場合 : fw * ( sw / fw ) [乗算と除算は整数演算]
    • fw > w の場合 : w
  2. 返される縦幅:
    • h >= sh の場合 : sh
    • sh > h >= fh の場合 : fh * ( sh / fh ) [乗算と除算は整数演算]
    • fh > h の場合 : h

ここで、w、h、sw、sh、fw、fh は以下のように定義されます。

[Note] 複数行テキストのサイズ : sw と sh の計算方法

複数行テキストのサイズは、 SFYMultipleEditWidget::SetFont 関数で設定したフォント、 SFYMultipleEditWidget::SetText 関数で設定したテキストの内容、 引数で指定した矩形領域の横幅から SFXGraphics::MeasureMultipleText 関数を使用して計算します。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント]

SFYResponder::GetSuitableBound 関数は、 引数にヒント領域を指定した場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundOptimize 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle にはヒント領域が初期設定されています。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント受信時の最適な領域計算

SFYWidget::HandleBoundOptimize 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

最適な領域の計算は、最初に SFYWidget::HandleBoundOptimize 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundOptimize 仮想関数をオーバーライドして処理を記述します。

内部実装

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

SFYMultipleTextWidgetSmp        _widget;

/*protected virtual */Void SFYMultipleEditWidget::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    rectangle->SetSize(_widget->GetSuitableBound(*rectangle).GetSize());
    return;
}// SFYMultipleEditWidget::HandleBoundOptimize //

参照

SFYResponder::GetSuitableBound | SFYMultipleTextWidget::HandleBoundOptimize | SFYMultipleTextWidget | SFXEvent | 領域イベント[SFEVT_RESPONDER_BOUND]


SFYMultipleEditWidget::HandleBoundReal
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
[ protected, virtual ]
Void HandleBoundReal(Void);

解説

この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] を受信したときに呼び出されます。

実領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、仮想領域を実領域に一致させます。

[Caution] 仮想領域

SFYMultipleEditWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] > [実領域の横幅]

のとき、[仮想領域の横幅]よりも長い行はこの横幅の長さに合わせて折り返して描画されるので、 左端、右端、または両端のテキストを表示できません。左右にスクロールして表示することもできません。

[仮想領域の縦幅] ≧ [複数行テキストの縦幅] > [実領域の縦幅]

のときは、複数行テキストは画面上にすべて表示されませんが、上下キーを押下してもスクロールしません。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント]

SFYResponder::SetRealBound 関数は、この関数内の処理により実領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundReal 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には変更後の実領域が設定されています。

[Note] 実領域が変化した時の処理

SFYWidget::HandleBoundReal 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

実領域の変更処理は、最初に SFYWidget::HandleBoundReal 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundReal 仮想関数をオーバーライドして処理を記述します。

内部実装

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

/*protected virtual */Void SFYMultipleEditWidget::HandleBoundReal(Void)
{
    SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize()));
    return;
}// SFYMultipleEditWidget::HandleBoundReal //

参照

SFYResponder::SetRealBound | 領域イベント[SFEVT_RESPONDER_BOUND] | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | 仮想領域 | 実領域 | ローカル領域


SFYMultipleEditWidget::HandleBoundRequest
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
[ protected, virtual, const ]
Void HandleBoundRequest(
    SFXRectanglePtr rectangle   // 計算された座標
);

解説

この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] を受信したときに呼び出されます。

レスポンダの最適な領域を計算します。

計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。

デフォルトの実装は以下の通りです。

[Caution] 前提条件

予め SFYResponder::SetRealBound 関数を使用して実領域(=ローカル領域)を設定する必要があります。 設定された実領域の横幅は領域計算に必要なヒント値として利用されます。

事前に設定されたローカル領域の横幅(ヒント値)で折り返した複数行テキストの矩形領域を返します。

複数行テキストの矩形領域のサイズは、 SFYMultipleEditWidget::SetFont 関数で設定されたフォントと SFYMultipleEditWidget::SetText 関数で設定されたテキストの内容、ローカル領域の横幅から SFXGraphics::MeasureMultipleText 関数を使用して計算します。

複数行テキストと、ヒント値として与えたローカル領域の横幅に下記のような関係があった場合、 計算結果である最適な矩形領域の横幅は MaxOfAllStatements(『複数行テキストを "\n" で区切った文字列の長さ』の最大値)が返ります。

HintWidth > MaxOfAllStatements

HintWidth : ヒント値として与えたローカル領域の横幅
MaxOfAllStatements :『複数行テキストを "\n" で区切った文字列の長さ』の最大値

逆に、この関係が成り立たない場合は、 ヒント値を超えないが、1文字分の横幅の整数倍で最大値が計算結果の領域の横幅になります。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント]

SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundRequest 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には実領域が初期設定されています。

[Tip] Tip
実領域のデフォルト値は SFXRectangle(0, 0, 0, 0) です。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント受信時の最適な領域計算

SFYWidget::HandleBoundRequest 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

最適な領域の計算は、最初に SFYWidget::HandleBoundRequest 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundRequest 仮想関数をオーバーライドして処理を記述します。

[Caution] 注意

この関数を呼び出す前に、 SFYResponder::SetRealBound 関数を使用してこのレスポンダの実領域(=ローカル領域※)の横幅をヒント値として予め設定しておく必要があります。

"\n(改行)"で区切られた複数行テキストの各文字列の長さがこのヒント値より小さい場合、 計算結果の領域の横幅は、これらの文字列のなかで最も長い文字列の長さが返されます。

この関数を使うと、 事前に設定されたローカル領域の横幅を最大値として複数行テキストを折り返して表示できる最適な矩形領域の縦幅を取得することができます。

仮想領域を設定しない限り、 実領域はローカル領域と同じです。

参照: 複数行のテキストを表示するレスポンダに最適な大きさを取得する

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント]

SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundRequest 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には実領域が初期設定されています。

[Tip] Tip
実領域のデフォルト値は SFXRectangle(0, 0, 0, 0) です。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント受信時の最適な領域計算

SFYWidget::HandleBoundRequest 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

最適な領域の計算は、最初に SFYWidget::HandleBoundRequest 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundRequest 仮想関数をオーバーライドして処理を記述します。

内部実装

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

SFYMultipleTextWidgetSmp        _widget;

/*protected virtual */Void SFYMultipleEditWidget::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    rectangle->SetSize(_widget->GetSuitableBound().GetSize());
    return;
}// SFYMultipleEditWidget::HandleBoundRequest //

参照

SFYResponder::GetSuitableBound | SFYMultipleTextWidget::HandleBoundRequest | SFYMultipleTextWidget | SFXEvent | 実領域 | ローカル領域 | 仮想領域 | 複数行のテキストを表示するレスポンダに最適な大きさを取得する | 領域イベント[SFEVT_RESPONDER_BOUND]


SFYMultipleEditWidget::HandleBoundVirtual
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
[ protected, virtual ]
Void HandleBoundVirtual(Void);

解説

この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] を受信したときに呼び出されます。

仮想領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、 テキストウィジェット(SFYMultipleEditWidget)のローカル領域をテキストウィジェット(SFYMultipleTextWidget)の実領域として設定します。

SFYMultipleEditWidget::SetText 関数によって設定されたテキストは、 内部でテキストウィジェット(SFYMultipleTextWidget)として保持されます。

[Caution] 仮想領域

SFYMultipleEditWidget クラスでは、 テキストの配置やスクロールを直感的に実現するために、 仮想領域実領域に合わせて使用することが推奨されます。

たとえば、

[仮想領域の横幅] > [実領域の横幅]

のとき、[仮想領域の横幅]よりも長い行はこの横幅の長さに合わせて折り返して描画されるので、 左端、右端、または両端のテキストを表示できません。左右にスクロールして表示することもできません。

[仮想領域の縦幅] ≧ [複数行テキストの縦幅] > [実領域の縦幅]

のときは、複数行テキストは画面上にすべて表示されませんが、上下キーを押下してもスクロールしません。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベント]

SFYResponder::SetRealBound / SFYResponder::SetVirtualBound 関数は、 この関数内の処理により仮想領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundVirtual 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には変更後の仮想領域が設定されています。

[Note] 仮想領域の変更処理

SFYWidget::HandleBoundVirtual 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

仮想領域の変更処理は、最初に SFYWidget::HandleBoundVirtual 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundVirtual 仮想関数をオーバーライドして処理を記述します。

内部実装

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

SFYMultipleTextWidgetSmp        _widget;

/*protected virtual */Void SFYMultipleEditWidget::HandleBoundVirtual(Void)
{
    Relocate();
    return;
}// SFYMultipleEditWidget::HandleBoundVirtual //

/*private */Void SFYMultipleEditWidget::Relocate(Void)
{
    _widget->SetRealBound(GetLocalBound());
    return;
}// SFYMultipleEditWidget::Relocate //

参照

SFYMultipleTextWidget | SFYMultipleEditWidget::SetText | SFYResponder::SetRealBound | SFYResponder::SetVirtualBound | SFYMultipleTextWidget | 領域イベント[SFEVT_RESPONDER_BOUND] | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | 仮想領域 | 実領域 | ローカル領域


SFYMultipleEditWidget::NewInstance
新しいインスタンスを作成します。
[ public, static ]
SFYMultipleEditWidgetSmp NewInstance(
    SFCErrorPtr exception = null   // エラー値
);

引数

exception

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

戻り値

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

解説

この関数は、SFYMultipleEditWidget クラスの新しいインスタンスを作成します。

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

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

使用例

以下は、複数行エディットウィジェットのインスタンスを生成するためのコードです。

// 複数行エディットウィジェットのインスタンスを生成する
SFCError error;
SFYMultipleEditWidgetSmp _multipleeditwidget;

if ((_multipleeditwidget = SFYMultipleEditWidget::NewInstance(&error)) != null) {
    // ...
}

SFYMultipleEditWidget::PageDown
複数行テキストを下方向に 1 ページ分スクロールします。
[ public ]
Bool PageDown(Void);

戻り値

  • 成功したとき: true
  • 失敗したとき: false

解説

この関数は、複数行テキストを下方向に 1 ページ分スクロールします。

参照

SFYMultipleEditWidget::PageUp | SFYMultipleTextWidget::PageDown


SFYMultipleEditWidget::PageUp
複数行テキストを上方向に 1 ページ分スクロールします。
[ public ]
Bool PageUp(Void);

戻り値

  • 成功したとき: true
  • 失敗したとき: false

解説

この関数は、複数行テキストを上方向に 1 ページ分スクロールします。

参照

SFYMultipleEditWidget::PageDown | SFYMultipleTextWidget::PageUp


SFYMultipleEditWidget::ScrollDown
複数行テキストを下方向にスクロールステップ分スクロールします。
[ public ]
Bool ScrollDown(Void);

戻り値

  • 成功したとき: true
  • 失敗したとき: false

解説

この関数は、複数行テキストを下方向にスクロールステップ分スクロールします。

参照

SFYMultipleEditWidget::ScrollUp | SFYMultipleEditWidget::SetScrollStep | SFYMultipleTextWidget::ScrollDown


SFYMultipleEditWidget::ScrollUp
複数行テキストを上方向にスクロールステップ分スクロールします。
[ public ]
Bool ScrollUp(Void);

戻り値

  • 成功したとき: true
  • 失敗したとき: false

解説

この関数は、複数行テキストを上方向にスクロールステップ分スクロールします。

参照

SFYMultipleEditWidget::ScrollDown | SFYMultipleEditWidget::SetScrollStep | SFYMultipleTextWidget::ScrollUp


SFYMultipleEditWidget::SetFont
フォントを設定します。
[ public ]
Void SetFont(
    AEEFont param   // 設定する値
);

解説

この関数は、フォントを設定します。

デフォルト値: AEE_FONT_NORMAL

参照

SFYMultipleEditWidget::GetFont | BREW API AEEFont


SFYMultipleEditWidget::SetHorizontalAlign
水平アライメントを設定します。
[ public ]
Void SetHorizontalAlign(
    HorizontalEnum param   // 設定する値
);

解説

この関数は、水平アライメントを設定します。

デフォルト値: SFYMultipleTextWidget::DEFAULT_HORIZONTAL

SFYMultipleTextWidget::DEFAULT_HORIZONTAL の値は SFYMultipleTextWidget::HorizontalEnum を参照してください。

参照

SFYMultipleEditWidget::GetHorizontalAlign | SFYMultipleEditWidget::HorizontalEnum | SFYMultipleTextWidget::HorizontalEnum


SFYMultipleEditWidget::SetInputMode
テキスト入力モードを設定します。
[ public ]
Void SetInputMode(
    AEETextInputMode param   // テキスト入力モード
);

解説

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

詳細は、 BREW API ITEXTCTL_SetInputMode および BREW API AEETextInputMode の説明を参照してください。

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

参照

SFYMultipleEditWidget::GetInputMode | SFXEditProperty::SetInputMode | BREW API ITEXTCTL_SetInputMode | BREW API AEETextInputMode


SFYMultipleEditWidget::SetMaximumLength
最大文字入力数を設定します。
[ public ]
SFCError SetMaximumLength(
    UInt16 param   // 最大文字入力数
);

戻り値

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

解説

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

詳細は、 BREW API ITEXTCTL_SetMaxSize の説明を参照してください。

デフォルト値: SINT16_MAXIMUM - 1。

参照

SFYMultipleEditWidget::GetMaximumLength | SFXEditProperty::SetMaximumLength | BREW API ITEXTCTL_SetMaxSize


SFYMultipleEditWidget::SetPasswordMode
パスワードモードを設定します。
[ public ]
SFCError SetPasswordMode(
    Bool param   // 設定する値(パスワードモードなら true、さもなければ false)
);

戻り値

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

解説

この関数は、パスワードモードを設定します。

引数が true の場合、ネイティブテキスト入力コントロールのプロパティ値に TP_PASSWORD を設定します。 このとき、入力した文字はすべて'*'(アスタリスク)で表示されます。また、実際の文字列はバッファして管理されます。

詳細は、 BREW API ITEXTCTL_SetProperties および BREW API AEE ITextCtl のプロパティ を参照してください。

デフォルト値: false

参照

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


SFYMultipleEditWidget::SetSFBMenuCtlClassID
[非推奨 (廃止予定 API)] SFBMenuCtl のクラス ID を設定します。
[ public ]
Void SetSFBMenuCtlClassID(
    AEECLSID param   // 設定するクラス ID
);

解説

[Note] 廃止予定

この API は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。

SFYApplication::GetEditor 関数を呼び出してテキスト入力コントロールエディタを取得し、 このエディタに対して SFXBaseEditor::SetSFBMenuCtlClassID 関数を呼び出して設定することを推奨します。

参照

SFYMultipleEditWidget::GetSFBMenuCtlClassID | SFBMenuCtl


SFYMultipleEditWidget::SetSFBTextCtlClassID
[非推奨 (廃止予定 API)] SFBTextCtl のクラス ID を設定します。
[ public ]
Void SetSFBTextCtlClassID(
    AEECLSID param   // 設定するクラス ID
);

解説

[Note] 廃止予定

この API は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。

SFYApplication::GetEditor 関数を呼び出してテキスト入力コントロールエディタを取得し、 このエディタに対して SFXBaseEditor::SetSFBTextCtlClassID 関数を呼び出して設定することを推奨します。

参照

SFYMultipleEditWidget::GetSFBTextCtlClassID | SFBTextCtl


SFYMultipleEditWidget::SetScrollStep
スクロール移動量を設定します。[単位:ピクセル]
[ public ]
Void SetScrollStep(
    SInt16 param   // 設定する値
);

解説

この関数は、1 回のスクロールで移動するピクセル数を設定します。

−1(デフォルト値)を設定すると、使用しているフォントの高さがスクロール移動量となります。

デフォルト値: SFYMultipleTextWidget::DEFAULT_STEP [単位:ピクセル]

SFYMultipleTextWidget::DEFAULT_STEP の値は SFYMultipleTextWidget::DefaultEnum を参照してください。

参照

SFYMultipleEditWidget::GetScrollStep | SFYMultipleEditWidget::DefaultEnum | SFYMultipleTextWidget::DefaultEnum


SFYMultipleEditWidget::SetText
テキストを設定します。
[ public ]
SFCError SetText(
    SFXPathConstRef path   // リソースファイルパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError SetText(
    SFXWideStringConstRef param   // テキスト
);

戻り値

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

解説

この関数は、表示するテキストを設定します。

テキストを直接、あるいは、リソースファイルから読み込むように指定します。

参照

SFYMultipleEditWidget::GetText SFYMultipleEditWidget::SetHorizontalAlign | SFYMultipleEditWidget::SetVerticalAlign | SFYMultipleEditWidget::SetTextColor | SFYMultipleEditWidget::SetFont | BREW API AEEFont


SFYMultipleEditWidget::SetTextColor
テキストの色を設定します。
[ public ]
Void SetTextColor(
    SFXRGBColorConstRef param   // 設定する値
);

解説

この関数は、 テキストの色を設定します。

デフォルト値: SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色]

非活性状態にあるときは、この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色でテキストは描画されます。

色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。

参照

SFYMultipleEditWidget::GetTextColor | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFYMultipleEditWidget::SetVerticalAlign
垂直アライメントを設定します。
[ public ]
Void SetVerticalAlign(
    VerticalEnum param   // 設定する値
);

解説

この関数は、垂直アライメントを設定します。

デフォルト値: SFYMultipleTextWidget::DEFAULT_VERTICAL

SFYMultipleTextWidget::DEFAULT_VERTICAL の値は SFYMultipleTextWidget::VerticalEnum を参照してください。

参照

SFYMultipleEditWidget::GetVerticalAlign | SFYMultipleEditWidget::VerticalEnum | SFYSingleTextWidget::VerticalEnum


SFYMultipleEditWidget::SnapAlign
複数行テキストのスクロール位置を初期状態に戻します。
[ public ]
Bool SnapAlign(Void);

参照

SFYMultipleEditWidget::SetVerticalAlign | SFYMultipleTextWidget::SnapAlign


SFYMultipleEditWidget::SnapDown
複数行テキストを下端までスクロールします。
[ public ]
Bool SnapDown(Void);

戻り値

  • 成功したとき: true
  • 失敗したとき: false

解説

この関数は、複数行テキストを下端までスクロールします。

参照

SFYMultipleEditWidget::SnapUp | SFYMultipleTextWidget::SnapDown


SFYMultipleEditWidget::SnapUp
複数行テキストを上端までスクロールします。
[ public ]
Bool SnapUp(Void);

戻り値

  • 成功したとき: true
  • 失敗したとき: false

解説

この関数は、複数行テキストを上端までスクロールします。

参照

SFYMultipleEditWidget::SnapDown | SFYMultipleTextWidget::SnapUp


SFYMultipleEditWidget::CodeEnum
SFYMultipleEditWidget クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('+', 'm', 'e', 'd')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType


SFYMultipleEditWidget::DefaultEnum
各種パラメータのデフォルト値を表します。
enum DefaultEnum {
    DEFAULT_STEP   = SFYMultipleTextWidget::DEFAULT_STEP   // スクロール移動量(単位:ピクセル)
};
SFMTYPEDEFTYPE(DefaultEnum)

参照

SFYMultipleTextWidget::DefaultEnum


SFYMultipleEditWidget::HorizontalEnum
水平方向のアライメントを表す定数です。
enum HorizontalEnum {
    HORIZONTAL_LEFT    = SFYMultipleTextWidget::HORIZONTAL_LEFT,   // 左詰め
    HORIZONTAL_CENTER  = SFYMultipleTextWidget::HORIZONTAL_CENTER, // 中央揃え
    HORIZONTAL_RIGHT   = SFYMultipleTextWidget::HORIZONTAL_RIGHT,  // 右詰め
    DEFAULT_HORIZONTAL = SFYMultipleTextWidget::DEFAULT_HORIZONTAL // デフォルト設定: 中央揃え
};
SFMTYPEDEFTYPE(HorizontalEnum)

参照

SFYMultipleTextWidget::HorizontalEnum


SFYMultipleEditWidget::VerticalEnum
垂直方向のアライメントを表す定数です。
enum VerticalEnum {
    VERTICAL_TOP     = SFYMultipleTextWidget::VERTICAL_TOP,     // 上詰め
    VERTICAL_MIDDLE  = SFYMultipleTextWidget::VERTICAL_MIDDLE,  // 中央揃え
    VERTICAL_BOTTOM  = SFYMultipleTextWidget::VERTICAL_BOTTOM,  // 下詰め
    DEFAULT_VERTICAL = SFYMultipleTextWidget::DEFAULT_VERTICAL  // デフォルト値: 中央揃え
};
SFMTYPEDEFTYPE(VerticalEnum)

参照

SFYMultipleTextWidget::VerticalEnum