前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFZContainerScrollBarControl
コンテナ専用スクロールバーコントロールです。
#include <SFZContainerScrollBarControl.h.hpp>
class SFZContainerScrollBarControl : public SFZScrollBarControl;
SFMTYPEDEFRESPONDER(SFZContainerScrollBarControl)

継承図

SFZContainerScrollBarControl クラスの継承図

協調図

SFZContainerScrollBarControl クラスの協調図

解説

SFZContainerScrollBarControl は、 SFYContainer を継承するレスポンダのスクロール状況を表示するためのコンテナ専用スクロールバーコントロールです。

スクロールバーコントロール(SFZContainerScrollBarControl)をレスポンダ (SFYContainer を継承するコンテナ)装着と着脱の手順は以下の通りです。

[Note] 注意

スクロールバーを装着する対象となるレスポンダを『ターゲットレスポンダ』と呼んでいます。

  1. SFYResponder::SetRealBound 関数を呼び出してスクロールバーコントロールの実領域を設定します (ターゲットレスポンダは、スクロールバーコントロールの親レスポンダか姉妹レスポンダの関係になります)。
  2. SFZContainerScrollBarControl::Bind 関数を呼び出してターゲットレスポンダにスクロールバーコントロールを装着します。 スクロールバーコントロール装着後は着脱するまでスクロールバーコントロールの最小値、最大値、現在値、ページサイズは自動的に設定・更新されます。
  3. スクロールバーコントロールのデザインは、 SFYScrollBarControl::SetBevelColor / SFYScrollBarControl::SetTrackColor / SFYScrollBarControl::SetArrowColor 関数を呼び出して変更します。
  4. スクロールバーコントロールの垂直方向と水平方向の配置は、 SFYScrollBarControl::SetOrientation 関数を呼び出して変更します。
  5. SFZContainerScrollBarControl::UnBind 関数を呼び出してターゲットレスポンダからスクロールバーコントロールを着脱します。 スクロールバーコントロールやターゲットレスポンダの状態が無効状態になった場合、 この関数は自動的に呼び出されます。
  6. 『ページサイズ ≧ {(最大値) - (最小値)} 』の場合、 スクロール不能状態にあり、サムは描画されません。このとき、『サムの長さ=トラックの長さ』となります。
[Note] ターゲットレスポンダの最小値、最大値、現在値、ページサイズについて

全体コンテンツの始点と終点の座標で最小値と最大値、表示コンテンツ(=実領域)の始点と幅で現在値とページサイズを表現します (いずれもローカル領域の座標系。スクロール方向が水平の場合は X 座標、垂直の場合は Y 座標。最小値は常に 0 です)。

ターゲットレスポンダの実領域仮想領域が変更された場合、 全体コンテンツの始点や終点、表示コンテンツの始点や幅も変更されます。 SFZContainerScrollBarControl クラスでは、 SFZScrollBarControl クラスと異なり、 開発者はスクロールバーコントロールの最小値、最大値、現在値、ページサイズを管理する必要がありません。 この処理は、SFZContainerScrollBarControl クラス内で自動的に行われます。

具体的には、領域変更通知ハンドラである SFZContainerScrollBarControl::OnBindBound 関数内から呼び出される SFZContainerScrollBarControl::Listen 関数によって行われます。

詳細は、 SFZContainerScrollBarControl::Bind / SFZContainerScrollBarControl::UnBind 関数の内部実装コードを参照してください。

[Note] スクロールバーイベントについて

スクロールバーコントロールは、 ターゲットレスポンダがスクロール可能な状態からスクロール不可能な状態、あるいはその逆になったとき、 スクロールバーイベント [SFEVT_RESPONDER_SCROLLBAR] [SFXEvent(SFEVT_RESPONDER_SCROLLBAR, SFP16_SCROLLBAR_ENABLE, 0)] を受信します。

[Note] スクロール可能性の判定について

ターゲットレスポンダが現在スクロール可能であるかどうかは、 SFYScrollBarControl::IsScrollable 関数を使用して判定します。

[Note] スクロールバーコントロールの幅について

スクロールバーコントロールの幅として、4 ピクセル以上の値を指定できます。 減分・増分矢印を矩形領域内にバランス良く描画するには、5 以上の奇数を指定することを推奨します。

[Note] Increment / Decrement / SetScrollStepValue 関数について

スクロールバーコントロールを装着するレスポンダ(ターゲットレスポンダ) 側でスクロールバーコントロールの現在値を増減する場合、 SFYScrollBarControl::Increment / SFYScrollBarControl::Decrement / SFYScrollBarControl::SetScrollStepValue 関数は使用しません。

これらの関数は、 スクロールバーコントロール側からターゲットレスポンダをスクロールしたい場合に使用します。

通常、ターゲットレスポンダ側でスクロールさせますので、 これらの関数を使用する機会は少ないと考えられます。

[Note] SFZContainerScrollBarControl のターゲットレスポンダの種類について

SFZContainerScrollBarControl は、 SFYContainer を継承するレスポンダに装着します。

具象レスポンダクラスとしては、 SFZContainerSFZWindowSFZTabPageSFZDialogSFZMessageDialogSFZQuestionDialog を挙げることができます。

サンプルコード: ScrollBarControl.zip

実行結果:

参照

SFYScrollBarControl | SFZScrollBarControl | SFYContainer | SFZContainer | SFZWindow | SFZTabPage | SFZDialog | SFZMessageDialog | SFZQuestionDialog | SFYControl::SetMinimumValue | SFYControl::SetMaximumValue | SFYControl::SetCurrentValue | SFYScrollBarControl::SetPageValue | SFYScrollBarControl::SetBevelColor | SFYScrollBarControl::SetTrackColor | SFYScrollBarControl::SetArrowColor | SFYScrollBarControl::SetOrientation | SFYScrollBarControl::IsScrollable | SFZContainerScrollBarControl::Bind | SFZContainerScrollBarControl::UnBind | SFYResponder::SetRealBound | 実領域 | 仮想領域 | 状態 | スクロールバーイベント [SFEVT_RESPONDER_SCROLLBAR]

メンバ

コンストラクタ/デストラクタ
SFZContainerScrollBarControl( Void )
SFZContainerScrollBarControl クラスのコンストラクタです。
~SFZContainerScrollBarControl( Void )
SFZContainerScrollBarControl クラスのデストラクタです。
パブリック関数
SFCError Bind( SFYResponderSmpConstRef responder )
指定されたレスポンダにこのスクロールバーコントロールを装着します。
static
SFZContainerScrollBarControlSmp
NewInstance( SFCErrorPtr exception = null )
新しいインスタンスを作成します。
Void UnBind( Void )
このスクロールバーコントロールを着脱します。
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
Bool Decrement( Void ) (SFYScrollBarControl から継承)
スクロールステップだけ現在値を減らします。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetArrowColor( Void ) (SFYScrollBarControl から継承)
矢印の色を取得します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
SFXBevelColorConstRef GetBevelColor( Void ) (SFYScrollBarControl から継承)
スクロールバーの外枠を描画するためのベベルカラーを取得します。
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 から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SInt32 GetCurrentValue( Void ) (SFYControl から継承)
コントロールの現在値を取得します。
SFYDistributerPtr GetDistributer( Void ) (SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
SFXRectangle GetGlobalBound( Void ) (SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
UInt32 GetID( Void ) (SFYResponder から継承)
このレスポンダの ID を取得します。
SFXRectangle GetLocalBound( Void ) (SFYResponder から継承)
このレスポンダのローカル領域を取得します。
SInt32 GetMaximumValue( Void ) (SFYControl から継承)
コントロールの最大値を取得します。
SInt32 GetMinimumValue( Void ) (SFYControl から継承)
コントロールの最小値を取得します。
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 から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
OrientationEnum GetOrientation( Void ) (SFYScrollBarControl から継承)
スクロールバーの方向(垂直か水平)を取得します。
SInt32 GetPageValue( Void ) (SFYScrollBarControl から継承)
ページサイズを取得します。
SFYResponderSmp GetParent( Void ) (SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
Bool GetPropertyTransparent( Void ) (SFYResponder から継承)
このレスポンダの透過属性を取得します。
SFXRectangleConstRef GetRealBound( Void ) (SFYResponder から継承)
このレスポンダの実領域を取得します。
VoidPtr GetReference( Void ) (SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
SFYRendererPtr GetRenderer( Void ) (SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
SFYResponderSmp GetRoot( Void ) (SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
SInt32 GetScrollStepValue( Void ) (SFYScrollBarControl から継承)
スクロールステップの値を取得します。
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 から継承)
このレスポンダのフレーム余白領域を取得します。
SFXRGBColorConstRef GetTrackColor( Void ) (SFYScrollBarControl から継承)
トラックの色を取得します。
SFCType GetType( Void ) (SFYResponder から継承)
このレスポンダのタイプを取得します。
SFXRectangleConstRef GetVirtualBound( Void ) (SFYResponder から継承)
このレスポンダの仮想領域を取得します。
Bool HasFrame( Void ) (SFYResponder から継承)
このレスポンダがコンテントレスポンダであるかどうかを判定します。
Bool Increment( Void ) (SFYScrollBarControl から継承)
スクロールステップだけ現在値を増やします。
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 から継承)
このレスポンダがルートレスポンダであるかどうかを判定します。
Bool IsScrollable( Void ) (SFYScrollBarControl から継承)
スクロール可能かどうかを判定します。
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 SetArrowColor( SFXRGBColorConstRef param ) (SFYScrollBarControl から継承)
矢印ラベルの色を設定します。
Void SetBackgroundColor( SFXRGBColorConstRef param ) (SFYWidget から継承)
背景の色を設定します。
Void SetBevelColor( SFXBevelColorConstRef param ) (SFYScrollBarControl から継承)
スクロールバーの外枠を描画するためのベベルカラーを設定します。
Void SetCurrentValue( SInt32 param ) (SFYControl から継承)
コントロールの現在値を設定します。
Void SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
Void SetMaximumValue( SInt32 param ) (SFYControl から継承)
コントロールの最大値を設定します。
Void SetMinimumValue( SInt32 param ) (SFYControl から継承)
コントロールの最小値を設定します。
Void SetOrientation( OrientationEnum param ) (SFYScrollBarControl から継承)
スクロールバーの方向(垂直か水平)を設定します。
Void SetPageValue( SInt32 param ) (SFYScrollBarControl から継承)
ページサイズを設定します。
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 SetScrollStepValue( SInt32 param ) (SFYScrollBarControl から継承)
スクロールステップを設定します。
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 SetTrackColor( SFXRGBColorConstRef param ) (SFYScrollBarControl から継承)
トラックの色を設定します。
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 から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
プロテクト関数
Void DrawDecrement( SFXGraphicsPtr graphics ) (SFYScrollBarControl から継承)
減分矢印矩形領域を描画します。
Void DrawIncrement( SFXGraphicsPtr graphics ) (SFYScrollBarControl から継承)
増分矢印矩形領域を描画します。
Void DrawThumb( SFXGraphicsPtr graphics ) (SFYScrollBarControl から継承)
サム領域を描画します。
Void DrawTrack( SFXGraphicsPtr graphics ) (SFYScrollBarControl から継承)
トラックを描画します。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
SFXRectangleConstRef GetDecrementArrowRectangle( Void ) (SFYScrollBarControl から継承)
減分矢印矩形領域を取得します。
SFXRectangleConstRef GetIncrementArrowRectangle( Void ) (SFYScrollBarControl から継承)
増分矢印矩形領域を取得します。
SInt16 GetScrollRange( Void ) (SFYScrollBarControl から継承)
スクロールレンジを取得します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
SInt16 GetThumbLength( Void ) (SFYScrollBarControl から継承)
サムの長さを取得します。
SFXRectangle GetThumbRectangle( Void ) (SFYScrollBarControl から継承)
サム領域を取得します。
SInt16 GetThumbTop( Void ) (SFYScrollBarControl から継承)
サムトップの位置を取得します。
SFXRectangleConstRef GetTrackRectangle( Void ) (SFYScrollBarControl から継承)
トラック領域を取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleBoundOptimize( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundReal( Void ) (SFYControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleBoundRequest( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void ) (SFYScrollBarControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
Void HandleRenderRequest( SFXGraphicsPtr graphics ) (SFZScrollBarControl から継承)
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void HandleScrollable( Void ) (SFYScrollBarControl から継承)
スクロール可能状態が変化したときに呼び出される関数です。
Void RelocateTrackAndArrow( Void ) (SFYScrollBarControl から継承)
トラック矩形領域と減分・増分矢印矩形領域を再配置します。
Void SetDecrementArrowRectangle( SFXRectangleConstRef param ) (SFYScrollBarControl から継承)
減分矢印矩形領域を設定します。
Void SetIncrementArrowRectangle( SFXRectangleConstRef param ) (SFYScrollBarControl から継承)
増分矢印矩形領域を設定します。
Void SetTrackRectangle( SFXRectangleConstRef param ) (SFYScrollBarControl から継承)
トラック領域を設定します。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFZContainerScrollBarControl クラスを表す定数です。
HorizontalEnum (SFYResponder から継承)
水平方向のアライメントを表す定数です。
OrientationEnum (SFYScrollBarControl から継承)
スクロールバーの方向を表す定数です。
VerticalEnum (SFYResponder から継承)
垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを "ccsc" に設定します。
  2. このスクロールバーコントロールに何もバインドされていないように初期化します。
  3. 下表にあるハンドラをこのレスポンダに登録します。

表 257. イベントハンドラ

イベント ハンドラの内容
このスクロールバーコントロールが無効状態になったときの状態イベント[SFEVT_RESPONDER_STATE] SFZContainerScrollBarControl::UnBind 関数を呼び出してスクロールバーコントロールをアンバインドします。
[Note] 注意
SFZContainerScrollBarControl クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。

内部実装

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

#include <SFZResponder/SFZControl/SFZScrollBarControl/SFZContainerScrollBarControl.h.hpp>
#include <SFXGeneral/SFXEvent/SFXEvent.h.hpp>

/*public */SFZContainerScrollBarControl::SFZContainerScrollBarControl(Void) static_throws
{
    static SFXEventRange::AtomRecConst  range[] = {
        {SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,  SFP16_STATE_VALID,   SFP16_STATE_VALID}
    };
    SFYHandler::RuleRec                 rule[lengthof(range)];

    if (static_try()) {
        SetType(CODE_TYPE);
        _responder = null;
        rule[0].spp = XANDLER_FUNCTION(OnStateValid);
        rule[0].reference = this;
        static_throw(RegisterHandler(atomic_cast(range), rule, lengthof(range)));
    }
}// SFZContainerScrollBarControl::SFZContainerScrollBarControl //

XANDLER_IMPLEMENT_VOIDSTATE(SFZContainerScrollBarControl, OnStateValid, invoker, reason, state)
{
    unused(invoker); unused(reason);
    if (!state) {
        UnBind();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDBOUND(SFZContainerScrollBarControl, OnStateValid)

参照

SFYResponder::SetType | SFZContainerScrollBarControl::CodeEnum | SFZContainerScrollBarControl::Bind | SFZContainerScrollBarControl::UnBind | SFXEvent | タイプ | 状態 | イベント | 状態イベント[SFEVT_RESPONDER_STATE]


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

解説

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

内部実装

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

/*public virtual */SFZContainerScrollBarControl::~SFZContainerScrollBarControl(Void)
{
}// SFZContainerScrollBarControl::~SFZContainerScrollBarControl //

SFZContainerScrollBarControl::Bind
指定されたレスポンダにこのスクロールバーコントロールを装着します。
[ public, virtual ]
SFCError Bind(
    SFYResponderSmpConstRef responder   // スクロールバーコントロールを装着する対象となるレスポンダ(ターゲットレスポンダ)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • responder 引数が null または自分自身のとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 指定されたレスポンダ(SFYContainer を継承するコンテナ。以下、ターゲットレスポンダ)にこのスクロールバーコントロールを装着します。

ターゲットレスポンダの実領域仮想領域から、 スクロールバーコントロールの最大値、最小値、現在値、ページサイズを設定する、 領域変更通知ハンドラをターゲットレスポンダに登録します。 この処理により、 スクロールバーコントロール装着後は、 ターゲットレスポンダの実領域や仮想領域が変更されると、 このハンドラが呼び出されて随時スクロール状況が自動更新されます。

スクロールバーコントロールを着脱するには、 SFZContainerScrollBarControl::UnBind 関数を呼び出します。

[Note] 注意

特定のスクロールバーコントロールが、同時に装着できるレスポンダの個数は 1 つだけです。 他のレスポンダに装着中のスクロールバーコントロールに対してこの関数を呼び出した場合、 スクロールバーコントロールは着脱され、新たに指定したレスポンダに装着されます。

詳細は、内部実装コードを参照してください。

[Note] SFZContainerScrollBarControl の装着対象となるレスポンダ

SFZContainerScrollBarControl は、 SFYContainer を継承するレスポンダに装着します。

具象レスポンダクラスとしては、 SFZContainerSFZWindowSFZTabPageSFZDialogSFZMessageDialogSFZQuestionDialog を挙げることができます。

内部実装

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

#include <SFZResponder/SFZControl/SFZScrollBarControl/SFZContainerScrollBarControl.h.hpp>
#include <SFXGeneral/SFXEvent/SFXEvent.h.hpp>

/*public */SFCError SFZContainerScrollBarControl::Bind(SFYResponderSmpConstRef responder)
{
    return BindImpl(responder.Get());
}// SFZContainerScrollBarControl::Bind //

/*private */SFCError SFZContainerScrollBarControl::BindImpl(SFYResponderPtr responder)
{
    static SFXEventRange::AtomRecConst  range[] = {
        {SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,  SFP16_STATE_VALID,   SFP16_STATE_VALID},
        {SFEVT_RESPONDER_BOUND,  SFEVT_RESPONDER_BOUND,   SFP16_BOUND_REAL, SFP16_BOUND_VIRTUAL}
    };
    SFYHandler::RuleRec                 rule[lengthof(range)];
    SFCError                            error(SFERR_NO_ERROR);

    UnBind();
    if ((_responder = responder) != null && _responder != this) {
        rule[0].spp = XANDLER_FUNCTION(OnBindValid);
        rule[0].reference = this;
        rule[1].spp = XANDLER_FUNCTION(OnBindBound);
        rule[1].reference = this;
        error = _responder->RegisterHandler(atomic_cast(range), rule, lengthof(range));
        if (error == SFERR_NO_ERROR) {
            Listen();
        }
    }
    else {
        error = SFERR_INVALID_PARAM;
    }
    return error;
}// SFZContainerScrollBarControl::BindImpl //

XANDLER_IMPLEMENT_VOIDBOUND(SFZContainerScrollBarControl, OnBindBound, invoker, reason, bound)
{
    unused(invoker); unused(reason); unused(bound);
    Listen();
    return;
}// XANDLER_IMPLEMENT_VOIDBOUND(SFZContainerScrollBarControl, OnBindBound)

/*private */Void SFZContainerScrollBarControl::Listen(Void)
{
    SFXRectangle                        rRect;
    SFXRectangle                        vRect;
    SInt16                              max;
    SInt16                              cur;
    SInt16                              page;

    if (_responder != null) {
        rRect = _responder->GetRealBound();
        vRect = _responder->GetVirtualBound();
        if (GetOrientation() == VERTICAL) {
            max = vRect.GetHeight();
            cur = -vRect.GetTop();
            page = rRect.GetHeight();
        }
        else {
            max = vRect.GetWidth();
            cur = -vRect.GetLeft();
            page = rRect.GetWidth();
        }
        SetMinimumValue(0);
        SetMaximumValue(max);
        SetCurrentValue(cur);
        SetPageValue(page);
    }
    return;
}// SFZContainerScrollBarControl::Listen //

参照

SFZContainerScrollBarControl::UnBind | SFYContainer | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]


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

引数

exception

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

戻り値

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

解説

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

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

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

使用例

以下は、コンテナ専用スクロールバーのインスタンスを生成するためのコードです。

// コンテナ専用スクロールバーのインスタンスを生成する
SFCError error;
SFZContainerScrollBarControlSmp _containerscrollbar;

if ((_containerscrollbar = SFZContainerScrollBarControl::NewInstance(&error)) != null) {
    // ...
}

SFZContainerScrollBarControl::UnBind
このスクロールバーコントロールを着脱します。
[ public, virtual ]
Void UnBind(Void);

解説

この関数は、 このスクロールバーコントロールを装着しているレスポンダ(SFYContainer を継承するコンテナ。以下、ターゲットレスポンダ)からスクロールバーコントロールを着脱します。

この関数は、 ターゲットレスポンダへの領域変更通知ハンドラの登録を解除し、 ターゲットレスポンダの実領域仮想領域の変更に伴う、 スクロールバーコントロールの最大値、最小値、現在値、ページサイズの自動更新を終了します。

この関数を実行後、ページサイズは 0 に設定されます。

スクロールバーコントロールを装着するには、 SFZContainerScrollBarControl::Bind 関数を呼び出します。

[Note] 注意

このスクロールバーコントロールを装着しているレスポンダが存在しない場合は何も起こりません。

[Note] 注意

この関数は、 スクロールバーコントロールまたはターゲットレスポンダの状態が無効状態 (SFYResponder::Terminate 関数が呼び出された状態)になると、 状態変更通知ハンドラから自動的に呼び出されます。

詳細は、内部実装コードを参照してください。

内部実装

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

#include <SFZResponder/SFZControl/SFZScrollBarControl/SFZContainerScrollBarControl.h.hpp>
#include <SFXGeneral/SFXEvent/SFXEvent.h.hpp>

/*public */Void SFZContainerScrollBarControl::UnBind(Void)
{
    static SFXEventRange::AtomRecConst  range[] = {
        {SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,  SFP16_STATE_VALID,   SFP16_STATE_VALID},
        {SFEVT_RESPONDER_BOUND,  SFEVT_RESPONDER_BOUND,   SFP16_BOUND_REAL, SFP16_BOUND_VIRTUAL}
    };
    SFYHandler::RuleRec                 rule[lengthof(range)];

    if (_responder != null) {
        rule[0].spp = XANDLER_FUNCTION(OnBindValid);
        rule[0].reference = this;
        rule[1].spp = XANDLER_FUNCTION(OnBindBound);
        rule[1].reference = this;
        _responder->UnregisterHandler(atomic_cast(range), rule, lengthof(range));
        _responder = null;
        SetPageValue(0);
    }
    return;
}// SFZContainerScrollBarControl::UnBind //

XANDLER_IMPLEMENT_VOIDSTATE(SFZContainerScrollBarControl, OnBindValid, invoker, reason, state)
{
    unused(invoker); unused(reason);
    if (!state) {
        UnBind();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDBOUND(SFZContainerScrollBarControl, OnBindValid)

XANDLER_IMPLEMENT_VOIDBOUND(SFZContainerScrollBarControl, OnBindBound, invoker, reason, bound)
{
    unused(invoker); unused(reason); unused(bound);
    Listen();
    return;
}// XANDLER_IMPLEMENT_VOIDBOUND(SFZContainerScrollBarControl, OnBindBound)

参照

SFZContainerScrollBarControl::Bind SFYScrollBarControl::SetPageValue | SFYContainer | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | 状態イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | 状態


SFZContainerScrollBarControl::CodeEnum
SFZContainerScrollBarControl クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('c', 'c', 's', 'c')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType