前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFZListBoxControl
リストボックスを表すコントロールです。
#include <SFZListBoxControl.h.hpp>
class SFZListBoxControl : public SFYBoxControl;
SFMTYPEDEFRESPONDER(SFZListBoxControl)

継承図

SFZListBoxControl クラスの継承図

協調図

SFZListBoxControl クラスの協調図

解説

■ 仕様と使い方

SFZListBoxControl は項目のリストの中からひとつ選択させるためのコントロール用クラスです。

選択された項目はハイライト表示されます。

[Note] 注意
項目が無効状態であれば、選択できません。

□リストボックスコントロールの使い方

項目を追加するには、SFZListBoxControl::Insert / SFZListBoxControl::InsertFirst / SFZListBoxControl::InsertLast 関数を使います。 項目を削除するには、SFZListBoxControl::Remove / SFZListBoxControl::RemoveFirst / SFZListBoxControl::RemoveLast 関数を使います。 SFZListBoxControl::Clear 関数を呼び出すと、すべての項目が削除されます。

SFZListBoxControl::SetUpKey 関数で設定された UP キー、または SFZListBoxControl::SetDownKey 関数で設定された DOWN キーを使用して選択項目を項目単位で移動できます。

選択項目が移動した場合は、 値イベント [SFXEvent(SFEVT_RESPONDER_VALUE, SFP16_VALUE_CURRENT, 選択された項目のインデックス)] を送信します。

[Note] 注意
この値イベントは、内部的に呼び出される SFYControl::SetCurrentValue 関数内で発生します。

選択項目は、 SFZListBoxControl::SetSelForeColor 関数で設定された文字列、 SFZListBoxControl::SetSelBackColor 関数で設定された背景色で描画されます。

非選択項目は、 SFZListBoxControl::SetItemForeColor 関数で設定された文字列の色、 SFZListBoxControl::SetItemBackColor 関数で設定された背景色で描画されます。

SFZListBoxControl::SetItemEnable 関数により設定される有効フラグが "false" である項目は、 SFZListBoxControl::SetItemForeColor 関数および SFZListBoxControl::SetSelForeColor 関数で設定された色、 SFZListBoxControl::SetItemBackColor 関数で設定された色を基にして目立たない色が自動的に計算されて描画されます。 選択項目の背景だけは、常に SFZListBoxControl::SetSelBackColor 関数で設定された色で描画されます。 また、このコントロールの状態が非活性状態であるときは、 すべての項目が 有効フラグが "false" であるときと同じ処理で描画されます。

SFZListBoxControl::SetGridLineEnable 関数と SFZListBoxControl::SetGridLineColor 関数を使用してグリッド線を表示することも可能です。 項目内のマージンは SFZListBoxControl::SetListMargin 関数で設定します。

デフォルトの実装では、 リストボックスコントロール[SFZListBoxControl]は 下記の結果イベント[SFEVT_RESPONDER_RESULT]を受信します。

開発者は、これらの結果イベントを受信するハンドラを登録できます。

操作キーは、SFYBoxControl::SetOperateKey 関数を使用して設定します。 デフォルトでは、セレクトキーが操作キーとして割り当てられています。

アクセスキーは、SFZListBoxControl::SetItemAccessKey 関数を使用して設定します。

ESCAPE キーは、SFZListBoxControl::SetEscapeKey 関数を使用して設定します。 デフォルトでは、クリアキーが ESCAPE キーとして割り当てられています。

[Caution] 注意
選択項目が SFZListBoxControl::SetItemEnable 関数により無効化("false" が設定)されているとき、 結果イベントは発生しません。
[Note] 注意
この結果イベントは SFZListBoxControl::HandleEscapeKey 関数内で発生します。

参照: 結果イベント[SFEVT_RESPONDER_RESULT] | SFYBoxControl::HandleOperateKey | SFZListBoxControl::HandleAccessKey | SFZListBoxControl::HandleEscapeKey

[Caution] 仕様上の制限

最小値は常に 0 です。

現在値は選択されている項目のインデックスを表します。

最大値は項目数を表します。 (※この機能は将来的に廃止予定です。 リストボックスコントロールの項目数を取得するは、 SFZListBoxControl::GetItemCount 関数を呼び出してください。)

SFYControl::SetMinimumValue 関数または SFYControl::SetMaximumValue 関数を使用して最小値または最大値を変更してはいけません。

[Note] フレックスリストボックスコントロール

リストボックスコントロールを高機能化したフレックスリストボックスコントロールが利用可能です。 このコントロールについての詳細仕様は、SFZFlexListBoxControl を参照してください。

□リストボックスを生成するためのコード

Void UserClass::Main(Void)
{
    SFZWindowSmp            window;
    SFZListBoxControlSmp    list;

    // ウインドウを生成する
    window = SFZWindow::NewInstance();
    window->SetParent(GetThis());
    window->SetBackgroundColor(SFXRGBColor(0xDD, 0xFF, 0xDD, 0x00));
    window->SetRealBound(GetLocalBound());
    window->SetState(true, true, true, true);

    // [必須] リストボックスを生成する
    list = SFZListBoxControl::NewInstance(&error);

    // [必須] 親をウィンドウに設定する
    list->SetParent(window);

    // [必須] 20個の項目を追加する
    for (SInt32 i = 0;  i < 20 ; ++i) {
        list->InsertLast(SFXWideString::Format("List Item %d ", i));
    }

    // [任意] グリッド線を有効にする
    list->SetGridLineEnable(true);

    // [任意] グリッド線の色を黒に設定する
    list->SetGridLineColor(SFXRGBColor(0x00, 0x00, 0x00, 0x00));

    // [任意] 連続スクロールするように設定する
    list->SetScrollRepeat(true);

    // [任意] スクロールバーの幅を設定する
    list->SetScrollBarWidth(7);

    // [必須] 引数で与えた領域内で最適な領域を計算して実領域を設定する
    list->SetRealBound(list->GetSuitableBound(_window->GetLocalBound().Deflate(30, 30)).SetOrigin(30, 30));

    // [必須] 状態を (true, true, true, true) に設定する
    list->SetState(true, true, true, true);
    return;
}

実行結果:

参照

リストボックスコントロール[SFZListBoxControl] | SFZFlexListBoxControl | SFYBoxControl | SFZComboBoxControl | SFXEvent | 状態 | 値イベント [SFEVT_RESPONDER_VALUE]

メンバ

コンストラクタ/デストラクタ
SFZListBoxControl( Void )
SFZListBoxControl クラスのコンストラクタです。
~SFZListBoxControl( Void )
SFZListBoxControl クラスのデストラクタです。
パブリック関数
SFCError Append( SFXPathConstRef path , UInt16 id )
[非推奨 (廃止予定 API)] 項目を追加します。
SFCError Append( SFXPathConstRef path , UInt16 id , AVKType key , WChar keyIcon = 0 )
[非推奨 (廃止予定 API)] 項目を追加します。
SFCError Append( SFXWideStringConstRef text )
[非推奨 (廃止予定 API)] 項目を追加します。
SFCError Append( SFXWideStringConstRef text , AVKType key , WChar keyIcon = 0 )
[非推奨 (廃止予定 API)] 項目を追加します。
Void Clear( Void )
すべての項目を削除します。
SFXRGBColorConstRef GetDefaultItemBackColor( Void )
非選択項目のデフォルトの背景色を取得します。
SFXRGBColorConstRef GetDefaultItemForeColor( Void )
非選択項目のデフォルトの前景色を取得します。
AVKType GetDownKey( Void )
DOWN キーを取得します。
AVKType GetEscapeKey( Void )
ESCAPE キーを取得します。
SInt32 GetFieldValue( Void )
同時に表示できる項目の数を取得します。
AEEFont GetFont( Void )
フォントを取得します。
SFXRGBColorConstRef GetGridLineColor( Void )
グリッド線の色を取得します。
Bool GetGridLineEnable( Void )
グリッド線有効フラグの値を取得します。
AVKType GetItemAccessKey( SInt32 index )
指定された項目のアクセスキーを取得します。
SFXRGBColorConstRef GetItemBackColor( SInt32 index )
指定された項目の非選択時の背景色を取得します。
SInt32 GetItemCount( Void )
項目数を取得します。
Bool GetItemEnable( SInt32 index )
指定された項目の有効フラグの値を取得します。
SFXRGBColorConstRef GetItemForeColor( SInt32 index )
指定された項目の非選択時の前景色を取得します。
SInt16 GetItemHeight( Void )
項目の高さを取得します。[単位:ピクセル]
WChar GetItemKeyIcon( SInt32 index )
指定された項目の絵文字を取得します。
SFXWideStringConstRef GetItemText( SInt32 index )
指定された項目の文字列を取得します。
SFXMarginConstRef GetListMargin( Void )
リスト項目のマージンを取得します。
SInt32 GetMaximumValue( Void )
項目数を取得します。
SFYScrollBarControlSmpConstRef GetScrollBarControl( Void )
スクロールバーコントロールを取得します。
SInt16 GetScrollBarWidth( Void )
スクロールバーの横幅を取得します。
DirectionEnum GetScrollDirection( Void )
スクロールの移動方向を取得します。
UInt32 GetScrollInterval( Void )
スクロールインターバルを取得します。[単位:ミリ秒]
Bool GetScrollRepeat( Void )
連続スクロールフラグの値を取得します。
SInt16 GetScrollStep( Void )
スクロール移動量を取得します。[単位:ピクセル]
SFXRGBColorConstRef GetSelBackColor( Void )
選択項目の背景色を取得します。
SFXRGBColorConstRef GetSelForeColor( Void )
選択項目の前景色を取得します。
SInt32 GetTopValue( Void )
現在表示されている項目内で最も上の項目のインデックスを取得します。
AVKType GetUpKey( Void )
UP キーを取得します。
UInt32 GetWaitInterval( Void )
スクロール開始までの待ち時間を設定します。[単位:ミリ秒]
SFCError Insert( SInt32 index , SFXPathConstRef path , UInt16 id )
項目を挿入します。
SFCError Insert( SInt32 index , SFXPathConstRef path , UInt16 id , AVKType key , WChar keyIcon )
項目を挿入します。
SFCError Insert( SInt32 index , SFXWideStringConstRef text )
項目を挿入します。
SFCError Insert( SInt32 index , SFXWideStringConstRef text , AVKType key , WChar keyIcon )
項目を挿入します。
SFCError InsertFirst( SFXPathConstRef path , UInt16 id )
項目を最初に挿入します。
SFCError InsertFirst( SFXPathConstRef path , UInt16 id , AVKType key , WChar keyIcon )
項目を最初に挿入します。
SFCError InsertFirst( SFXWideStringConstRef text )
項目を最初に挿入します。
SFCError InsertFirst( SFXWideStringConstRef text , AVKType key , WChar keyIcon )
項目を最初に挿入します。
SFCError InsertLast( SFXPathConstRef path , UInt16 id )
項目を最後に挿入します。
SFCError InsertLast( SFXPathConstRef path , UInt16 id , AVKType key , WChar keyIcon )
項目を最後に挿入します。
SFCError InsertLast( SFXWideStringConstRef text )
項目を最後に挿入します。
SFCError InsertLast( SFXWideStringConstRef text , AVKType key , WChar keyIcon )
項目を最後に挿入します。
static
SFZListBoxControlSmp
NewInstance( SFCErrorPtr exception = null )
新しいインスタンスを作成します。
Void Remove( SInt32 index )
指定されたインデックスの位置または範囲の項目を削除します。
Void Remove( SInt32 begin , SInt32 end )
指定されたインデックスの位置または範囲の項目を削除します。
Void RemoveFirst( Void )
先頭の項目を削除します。
Void RemoveLast( Void )
末尾の項目を削除します。
Void SetDefaultItemBackColor( SFXRGBColorConstRef param )
非選択項目のデフォルトの背景色を設定します。
Void SetDefaultItemForeColor( SFXRGBColorConstRef param )
非選択項目のデフォルトの前景色を設定します。
Void SetDownKey( AVKType param )
DOWN キーを設定します。
Void SetEscapeKey( AVKType param )
ESCAPE キーを設定します。
Void SetFont( AEEFont value )
フォントを設定します。
Void SetGridLineColor( SFXRGBColorConstRef param )
グリッド線の色を設定します。
Void SetGridLineEnable( Bool param )
グリッド線有効フラグを設定します。
SFCError SetItemAccessKey( SInt32 index , AVKType key )
指定された項目にアクセスキーを設定します。
SFCError SetItemBackColor( SInt32 index , SFXRGBColorConstRef param )
指定された項目の非選択時の背景色を設定します。
SFCError SetItemEnable( SInt32 index , Bool param )
指定された項目の有効フラグを設定します。
Void SetItemForeColor( SInt32 index , SFXRGBColorConstRef param )
指定された項目の非選択時の前景色を設定します。
SFCError SetItemKeyIcon( SInt32 index , WChar param )
指定された項目に絵文字を設定します。
SFCError SetItemText( SInt32 index , SFXPathConstRef path , UInt16 id )
指定された項目に文字列を設定します。
SFCError SetItemText( SInt32 index , SFXWideStringConstRef item )
指定された項目に文字列を設定します。
Void SetListMargin( SFXMarginConstRef param )
リスト項目のマージンを設定します。
SFCError SetScrollBarControl( SFYScrollBarControlSmpConstRef param )
スクロールバーコントロールを設定します。
Void SetScrollBarWidth( SInt16 param )
スクロールバーの横幅を設定します。
Void SetScrollDirection( DirectionEnum param )
スクロールの移動方向を設定します。
Void SetScrollInterval( UInt32 param )
スクロールインターバルを設定します。[単位:ミリ秒]
Void SetScrollRepeat( Bool param )
連続スクロールフラグを設定します。
Void SetScrollStep( SInt16 param )
スクロール移動量を設定します。[単位:ピクセル]
Void SetSelBackColor( SFXRGBColorConstRef param )
選択項目の背景色を設定します。
Void SetSelForeColor( SFXRGBColorConstRef param )
選択項目の前景色を設定します。
Void SetUpKey( AVKType param )
UP キーを設定します。
Void SetWaitInterval( UInt32 param )
スクロール開始までの待ち時間を設定します。[単位:ミリ秒]
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
SFXBevelColorConstRef GetBevelColor( Void ) (SFYBoxControl から継承)
ボックスコントロールの外枠を描画するためのベベルカラーを取得します。
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 から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFXRGBColorConstRef GetFocusColor( Void ) (SFYBoxControl から継承)
フォーカス状態にあるときの内枠の色を取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
SFXRGBColorConstRef GetFrameColor( Void ) (SFYBoxControl から継承)
中枠の色を取得します。
SFXRectangle GetGlobalBound( Void ) (SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
UInt32 GetID( Void ) (SFYResponder から継承)
このレスポンダの ID を取得します。
SFXRectangle GetLocalBound( Void ) (SFYResponder から継承)
このレスポンダのローカル領域を取得します。
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 から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
AVKType GetOperateKey( Void ) (SFYBoxControl から継承)
操作キーを取得します。
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 SetBevelColor( SFXBevelColorConstRef param ) (SFYBoxControl から継承)
ボックスコントロールの外枠を描画するためのベベルカラーを設定します。
Void SetCurrentValue( SInt32 param ) (SFYControl から継承)
コントロールの現在値を設定します。
Void SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
Void SetFocusColor( SFXRGBColorConstRef param ) (SFYBoxControl から継承)
フォーカス状態にあるときの内枠の色を設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetFrameColor( SFXRGBColorConstRef param ) (SFYBoxControl から継承)
中枠の色を設定します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
Void SetMaximumValue( SInt32 param ) (SFYControl から継承)
コントロールの最大値を設定します。
Void SetMinimumValue( SInt32 param ) (SFYControl から継承)
コントロールの最小値を設定します。
Void SetOperateKey( AVKType param ) (SFYBoxControl から継承)
操作キーを設定します。
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 から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
プロテクト関数
Void HandleAccessKey( AVKType key )
アクセスキーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
Void HandleBoundOptimize( SFXRectanglePtr rectangle )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundRequest( SFXRectanglePtr rectangle )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
Void HandleEscapeKey( Void )
エスケープキーのキーイベントを受信したときに呼び出される関数です。
Void HandleOperateKey( Void )
操作キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
Void HandleRenderRequest( SFXGraphicsPtr graphics )
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void DrawBox( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle ) (SFYBoxControl から継承)
ボックスコントロールを描画します。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
static
SFXMarginConstRef
GetBoxMargin( Void ) (SFYBoxControl から継承)
ボックスコントロールのマージンの値を取得します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleBoundReal( Void ) (SFYControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFZListBoxControl クラスを表す定数です。
DefaultEnum
各種パラメータのデフォルト値を表します。
DirectionEnum
スクロールの移動方向を表します。
HorizontalEnum (SFYResponder から継承)
水平方向のアライメントを表す定数です。
VerticalEnum (SFYResponder から継承)
垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを "clst" に設定します。
  2. デフォルトのスクロールバーコントロールの初期化を行います。
  3. スクロールバーの横幅を SFZListBoxControl::DEFAULT_BAR_WIDTH に設定します。
  4. 非選択時項目のデフォルトの背景色を SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色] に設定します。
  5. 非選択時項目のデフォルトの前景色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  6. 選択時項目の背景色を SFXRGBColor(0x11, 0x22, 0xBB, 0x00)[青色] に設定します。
  7. 選択時項目の前景色を SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色] に設定します。
  8. グリッド線の色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  9. グリッド線描画フラグを "false" に設定します。
  10. 連続スクロールフラグを "false" に設定します。
  11. 一度に表示できる項目数を 0 に設定します。
  12. インデックス値 0 の項目を現在の選択項目として実領域内の最上位に設定します。
  13. テキストのフォントを AEE_FONT_NORMAL に設定します。
  14. リスト項目のマージンを SFXMargin(1, 2) に設定します。
  15. スクロール開始までの待ち時間を SFZListBoxControl::DEFAULT_WAIT に設定します。
  16. スクロール移動方向を SFZListBoxControl::DEFAULT_DIRECTION に設定します。
  17. スクロールインターバルを SFZListBoxControl::DEFAULT_SCROLL に設定します。
  18. スクロール移動量を SFZListBoxControl::DEFAULT_STEP に設定します。
  19. 操作キーを AVK_SELECT に設定します。
  20. ESCAPE キーを AVK_CLR に設定します。
  21. UP キーを AVK_UP に設定します。
  22. DOWN キーを AVK_DOWN に設定します。
  23. 下表にあるハンドラをレスポンダに登録します。

表 265. イベントハンドラ

イベント ハンドラの内容
SFYBoxControl::SetOperateKey で設定された操作キーの SFEVT_KEY イベント SFZListBoxControl::HandleOperateKey 関数を呼び出します。
SFZListBoxControl::SetItemAccessKey で設定されたアクセスキーの SFEVT_KEY イベント SFZListBoxControl::HandleOperateKey 関数を呼び出します。
SFZListBoxControl::SetEscapeKey で設定された ESCAPE キーの SFEVT_KEY イベント SFZListBoxControl::HandleEscapeKey 関数を呼び出します。
SFZListBoxControl::SetUpKey で設定された UP キーの SFEVT_KEY イベント 1つ上の項目を現在の選択項目にします(必要に応じて1項目分上にスクロールします)。
SFZListBoxControl::SetDownKey で設定された DOWN キーの SFEVT_KEY イベント 1つ下の項目を現在の選択項目にします(必要に応じて1項目分下にスクロールします)。
アプリ中断イベント[SFEVT_APP_SUSPEND] 選択項目をスクロールするためのタイマー処理をキャンセルします。
アプリ再開イベント[SFEVT_APP_RESUME] 選択項目をスクロールするためのタイマー処理を再開します。
フォーカス状態が変更された時に発生する状態イベント[SFEVT_RESPONDER_STATE] フォーカス状態になると選択項目のスクロールを開始し、非フォーカス状態になるとスクロールを停止する
現在の選択項目が変更になった時に発生する値イベント[SFEVT_RESPONDER_VALUE] SFYControl::SetCurrentValue 関数を呼び出して現在選択されている項目のインデックスを現在値に設定します。
一度に表示できる項目数が変更になった時に発生する値イベント[SFEVT_RESPONDER_VALUE] このリストボックスを再配置します。
[Note] 注意
SFZListBoxControl クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。

内部実装

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

/*protected */SFZListBoxControl::SFZListBoxControl(Void) static_throws
{
    static SFXRGBColor::AtomRecConst            rgb[] = {
        {{{0x00, 0x00, 0x00, 0x00}}},           // black: ItemFore
        {{{0x00, 0xFF, 0xFF, 0xFF}}},           // white: ItemBack
        {{{0x00, 0xFF, 0xFF, 0xFF}}},           // white: SelFore
        {{{0x00, 0x11, 0x22, 0xBB}}}            // blue : SelBack
    };
    static SFXEventRange::AtomRecConst          lrange[] = {
        {      SFEVT_APP_RESUME,       SFEVT_APP_RESUME,          SFP16_BEGIN,            SFP16_END},
        {     SFEVT_APP_SUSPEND,      SFEVT_APP_SUSPEND,          SFP16_BEGIN,            SFP16_END},
        #if TARGET_VERSION_GE(3, 0, 0)
        {       SFEVT_KEY_PRESS,      SFEVT_KEY_RELEASE,          SFP16_BEGIN,            SFP16_END},
        #else
        {       SFEVT_KEY_PRESS,         SFEVT_KEY_HELD,          SFP16_BEGIN,            SFP16_END},
        #endif
        {             SFEVT_KEY,              SFEVT_KEY,          SFP16_BEGIN,            SFP16_END},
        { SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,    SFP16_STATE_FOCUS,    SFP16_STATE_FOCUS},
        { SFEVT_RESPONDER_VALUE,  SFEVT_RESPONDER_VALUE,  SFP16_VALUE_CURRENT,  SFP16_VALUE_CURRENT},
        { SFEVT_RESPONDER_VALUE,  SFEVT_RESPONDER_VALUE,    SFP16_VALUE_FIELD,    SFP16_VALUE_FIELD}
    };
    SFYHandler::RuleRec                         lrule[lengthof(lrange)];
    SFYHandler::RuleRec                         brule[lengthof(brange)];
    SFCError                                    error;

    if (static_try()) {
        SetType(CODE_TYPE);
        lrule[0].spp = XANDLER_FUNCTION(OnAppResume);
        lrule[0].reference = this;
        lrule[1].spp = XANDLER_FUNCTION(OnAppSuspend);
        lrule[1].reference = this;
        lrule[2].spp = XANDLER_FUNCTION(OnShield);
        lrule[2].reference = this;
        lrule[3].spp = XANDLER_FUNCTION(OnKey);
        lrule[3].reference = this;
        lrule[4].spp = XANDLER_FUNCTION(OnStateFocus);
        lrule[4].reference = this;
        lrule[5].spp = XANDLER_FUNCTION(OnCurrentValue);
        lrule[5].reference = this;
        lrule[6].spp = XANDLER_FUNCTION(OnFieldValue);
        lrule[6].reference = this;
        static_throw(RegisterHandler(atomic_cast(lrange), lrule, lengthof(lrange)));
        if (static_try()) {
            if ((_bar = SFZScrollBarControl::NewInstance(&error)) != null) {
                static_throw(_bar->SetParent(GetThis()));
                if (static_try()) {
                    _bar->SetOrientation(SFYScrollBarControl::VERTICAL);
                    brule[0].spp = XANDLER_FUNCTION(OnBarScrollEnable);
                    brule[0].reference = this;
                    static_throw(_bar->RegisterHandler(atomic_cast(brange), brule, lengthof(brange)));
                    if (static_try()) {
                        _color.defaultItemFore.Set(rgb[0]);
                        _color.defaultItemBack.Set(rgb[1]);
                        _color.selFore.Set(rgb[2]);
                        _color.selBack.Set(rgb[3]);
                        _color.gridLine.Set(rgb[0]);
                        _font = AEE_FONT_NORMAL;
                        _listMargin.Set(1, 2);
                        _key.operate = AVK_SELECT;
                        _key.escape = AVK_CLR;
                        _key.up = AVK_UP;
                        _key.down = AVK_DOWN;
                        _barWidth = DEFAULT_BAR_WIDTH;
                        _state = STATE_IDLE;
                        _timer.Set(XALLBACK_INTERNAL(OnTimer));
                        _wait = DEFAULT_WAIT;
                        _scroll = DEFAULT_SCROLL;
                        _direction = DEFAULT_DIRECTION;
                        _step = Measure();
                        _field = 0;
                        _top = 0;
                        _repeat = false;
                        _line = false;
                    }
                }
            }
            else {
                static_throw(error);
            }
        }
    }
}// SFZListBoxControl::SFZListBoxControl //

/*private */SInt16 SFZListBoxControl::Measure(Void)
{
    _size.Set(SFXGraphics::MeasureSingleText(_font, " "), SFXGraphics::GetFontHeight(_font));
    return _size.GetWidth();
}// SFZListBoxControl::Measure //

/*private */XANDLER_IMPLEMENT_VOIDRESUME(SFZListBoxControl, OnAppResume, invoker, environment)
{
    unused(invoker); unused(environment);
    switch (_state) {
        case STATE_WAIT:
            _timer.Schedule(_wait);
            break;
        case STATE_SCROLL:
            _timer.Schedule(_scroll);
            break;
        case STATE_IDLE:
        default:
            break;
    }
    return;
}// XANDLER_IMPLEMENT_VOIDRESUME(SFZListBoxControl, OnAppResume) //

/*private */XANDLER_IMPLEMENT_VOIDSUSPEND(SFZListBoxControl, OnAppSuspend, invoker, reason, info)
{
    unused(invoker); unused(reason); unused(info);
    if (_state != STATE_IDLE) {
        _timer.Cancel();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDSUSPEND(SFZListBoxControl, OnAppSuspend) //

/*private */XANDLER_IMPLEMENT_BOOLEVENT(SFZListBoxControl, OnShield, invoker, event)
{
    unused(invoker);
    return (event.GetP16() == _key.operate || event.GetP16() == _key.escape || event.GetP16() == _key.up || event.GetP16() == _key.down || ContainsAccessKey(static_cast<AVKType>(event.GetP16())));
}// XANDLER_IMPLEMENT_BOOLEVENT(SFZListBoxControl, OnShield) //

/*private */XANDLER_IMPLEMENT_BOOLEVENT(SFZListBoxControl, OnKey, invoker, event)
{
    Bool                                        result(false);

    unused(invoker);
    if (event.GetP16() == _key.operate) {
        HandleOperateKey();
        result = true;
    }
    else if (event.GetP16() == _key.escape) {
        HandleEscapeKey();
        result = true;
    }
    else if (event.GetP16() == _key.up) {
        StopScroll();
        HandleUpKey();
        Refresh();
        StartScroll();
        result = true;
    }
    else if (event.GetP16() == _key.down) {
        StopScroll();
        HandleDownKey();
        Refresh();
        StartScroll();
        result = true;
    }
    else if (ContainsAccessKey(static_cast<AVKType>(event.GetP16()))) {
        HandleAccessKey(static_cast<AVKType>(event.GetP16()));
        result = true;
    }
    return result;
}// XANDLER_IMPLEMENT_BOOLEVENT(SFZListBoxControl, OnKey) //

/*private */XANDLER_IMPLEMENT_VOIDSTATE(SFZListBoxControl, OnStateFocus, invoker, reason, state)
{
    unused(invoker); unused(reason);
    (state) ? (StartScroll()) : (StopScroll());
    return;
}// XANDLER_IMPLEMENT_VOIDSTATE(SFZListBoxControl, OnStateFocus) //

/*private */XANDLER_IMPLEMENT_VOIDVALUE(SFZListBoxControl, OnCurrentValue, invoker, reason, value)
{
    SInt32                                      cur(value);
    SInt32                                      max(GetItemCount());

    unused(invoker); unused(reason);
    if (cur >= max) {
        cur = max - 1;
    }
    if (cur < 0) {
        cur = 0;
    }
    if (cur != value) {
        SetCurrentValue(cur);
    }
    else {
        Refresh();
        if (_state != STATE_IDLE) {
            StartScroll();
        }
    }
    return;
}// XANDLER_IMPLEMENT_VOIDVALUE(SFZListBoxControl, OnCurrentValue) //

/*private */XANDLER_IMPLEMENT_VOIDVALUE(SFZListBoxControl, OnFieldValue, invoker, reason, value)
{
    unused(invoker); unused(reason); unused(value);
    Refresh();
    return;
}// XANDLER_IMPLEMENT_VOIDVALUE(SFZListBoxControl, OnFieldValue) //

/*private */XANDLER_IMPLEMENT_VOIDSCROLLBAR(SFZListBoxControl, OnBarScrollEnable, invoker, reason)
{
    unused(invoker); unused(reason);
    _bar->SetState(_bar->IsScrollable(), _bar->IsScrollable(), false, false);
    return;
}// XANDLER_IMPLEMENT_VOIDSCROLLBAR(SFZListBoxControl, OnBarScrollEnable) //

/*private */XALLBACK_IMPLEMENT_SFXTIMER(SFZListBoxControl, OnTimer)
{
    SInt16                                      offset;

    switch (_state) {
        case STATE_WAIT:
            _state = STATE_SCROLL;
        case STATE_SCROLL:
            offset = 0;
            switch (_direction) {
                case DIRECTION_RIGHT:
                    offset = +_step;
                    break;
                case DIRECTION_LEFT:
                default:
                    offset = -_step;
                    break;
            }
            if (Scroll(offset)) {
                Render();
            }
            _timer.Schedule(_scroll);
            break;
        case STATE_IDLE:
        default:
            break;
    }
    return;
}// XALLBACK_IMPLEMENT_SFXTIMER(SFZListBoxControl, OnTimer) //

参照

SFYResponder::SetType | SFZListBoxControl::CodeEnum | SFZListBoxControl::SetScrollBarWidth SFZListBoxControl::SetDefaultItemBackColor | SFZListBoxControl::SetDefaultItemForeColor | SFZListBoxControl::SetSelBackColor | SFZListBoxControl::SetSelForeColor | SFZListBoxControl::SetGridLineColor | SFZListBoxControl::SetGridLineEnable | SFZListBoxControl::SetScrollRepeat | SFZListBoxControl::GetFieldValue | SFZListBoxControl::GetTopValue | SFZListBoxControl::SetFont | SFZListBoxControl::SetListMargin | SFZListBoxControl::SetScrollDirection | SFZListBoxControl::SetScrollInterval | SFZListBoxControl::SetScrollStep | SFZListBoxControl::SetWaitInterval | SFZListBoxControl::DirectionEnum | SFZListBoxControl::DefaultEnum | SFYBoxControl::SetOperateKey | SFZListBoxControl::SetItemAccessKey | SFZListBoxControl::HandleOperateKey | SFZListBoxControl::SetEscapeKey | SFZListBoxControl::HandleEscapeKey | SFZListBoxControl::SetUpKey | SFZListBoxControl::SetDownKey | SFXMargin | SFXRGBColor | SFXEvent | タイプ | 実領域 | 状態 | イベント | キーイベント[SFEVT_KEY] | アプリ中断イベント[SFEVT_APP_SUSPEND] | アプリ再開イベント[SFEVT_APP_RESUME] | 状態イベント[SFEVT_RESPONDER_STATE] | 値イベント[SFEVT_RESPONDER_VALUE]


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

解説

このリストボックスコントロールからすべての項目を削除します。

内部実装

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

/*protected virtual */SFZListBoxControl::~SFZListBoxControl(Void)
{
    ListItemArray::Iterator                     i0;
    ListItemPtr                                 item;

    StopScroll();
    if (_item.GetSize() > 0) {
        i0 = _item.GetFirstIterator();
        while (i0.HasNext()) {
            if ((item = i0.GetNext()) != null) {
                ::delete item;
            }
        }
    }
}// SFZListBoxControl::~SFZListBoxControl //

参照

SFZListBoxControl::Clear


SFZListBoxControl::Append
[非推奨 (廃止予定 API)] 項目を追加します。
[ public ]
SFCError Append(
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
);
[ public ]
SFCError Append(
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
    AVKType key            // ダイレクトアクセスキー
    WChar keyIcon = 0      // キーアイコン
);
[ public ]
SFCError Append(
    SFXWideStringConstRef text   // 項目のテキスト
);
[ public ]
SFCError Append(
    SFXWideStringConstRef text   // 項目のテキスト
    AVKType key                  // ダイレクトアクセスキー
    WChar keyIcon = 0            // キーアイコン
);

解説

この関数は、リストボックスに項目を追加します。

追加された項目はリストボックスの最後の項目となります。

[Note] 注意
追加後の項目数が SFYControl クラスの最大値として設定されます。
[Note] 廃止予定

この関数は、SophiaFramework UNIVERSE 6.0 で廃止される予定です。 この関数の代わりに SFZListBoxControl::InsertLast 関数を利用することを推奨します。

参照

SFZListBoxControl::InsertLast | SFZListBoxControl::Remove | SFYControl::SetMaximumValue


SFZListBoxControl::Clear
すべての項目を削除します。
[ public ]
Void Clear(Void);

解説

この関数は、リストボックスからすべての項目を削除します。

参照

SFZListBoxControl::Append | SFZListBoxControl::Remove


SFZListBoxControl::GetDefaultItemBackColor
非選択項目のデフォルトの背景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetDefaultItemBackColor(Void);

戻り値

非選択項目のデフォルトの背景色。

解説

この関数は、 非選択項目のデフォルトの背景色(SFXRGBColor)を取得します。

参照

SFZListBoxControl::SetDefaultItemBackColor


SFZListBoxControl::GetDefaultItemForeColor
非選択項目のデフォルトの前景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetDefaultItemForeColor(Void);

戻り値

非選択項目のデフォルトの前景色(テキストを描画する色)。

解説

この関数は、 非選択項目のデフォルトの前景色(テキストを描画する色)を取得します。

参照

SFZListBoxControl::SetDefaultItemForeColor


SFZListBoxControl::GetDownKey
DOWN キーを取得します。
[ public, const ]
AVKType GetDownKey(Void);

戻り値

DOWN キー。

解説

この関数は、SFZListBoxControl::SetDownKey 関数により設定された DOWN キーを取得します。

参照

SFZListBoxControl::SetDownKey | SFZListBoxControl::GetUpKey | SFZListBoxControl::SetUpKey | AVKType


SFZListBoxControl::GetEscapeKey
ESCAPE キーを取得します。
[ public, const ]
AVKType GetEscapeKey(Void);

戻り値

ESCAPE キー。

解説

この関数は、SFZListBoxControl::GetEscapeKey 関数により設定された DOWN キーを取得します。

参照

SFZListBoxControl::GetEscapeKey | AVKType


SFZListBoxControl::GetFieldValue
同時に表示できる項目の数を取得します。
[ public, const ]
SInt32 GetFieldValue(Void);

戻り値

同時に表示できる項目の数。

解説

この関数は、リストボックスに同時に表示できる項目の数を取得します。

[Note] 注意

表示できる項目の数は、リストボックスの高さ、リストマージン、フォントの種類などによって決定されます。

参照

SFZListBoxControl::SetListMargin | SFZListBoxControl::SetFont | BREW API AEEFont


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

戻り値

リストボックスの項目を描画するフォント。

解説

この関数は、リストボックスの項目を描画するフォントを取得します。

参照

SFZListBoxControl::SetFont | BREW API AEEFont


SFZListBoxControl::GetGridLineColor
グリッド線の色を取得します。
[ public, const ]
SFXRGBColorConstRef GetGridLineColor(Void);

戻り値

グリッド線の色。

解説

この関数は、グリッド線の色(SFXRGBColor)を取得します。

参照

SFZListBoxControl::SetGridLineColor | SFZListBoxControl::SetGridLineEnable


SFZListBoxControl::GetGridLineEnable
グリッド線有効フラグの値を取得します。
[ public, const ]
Bool GetGridLineEnable(Void);

戻り値

グリッド線有効フラグに設定された値。

解説

この関数は、テキストメニューのグリッド線有効フラグに設定された値を取得します。

参照

SFZListBoxControl::SetGridLineEnable | SFZListBoxControl::SetGridLineColor


SFZListBoxControl::GetItemAccessKey
指定された項目のアクセスキーを取得します。
[ public, const ]
AVKType GetItemAccessKey(
    SInt32 index   // 項目のインデックス
);

戻り値

指定された項目のアクセスキー。アクセスキーが設定されていない場合、AVK_UNDEFINED。

解説

この関数は、指定された項目のアクセスキーを取得します。

参照

SFZListBoxControl::SetItemAccessKey | AVKType


SFZListBoxControl::GetItemBackColor
指定された項目の非選択時の背景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetItemBackColor(
    SInt32 index   // 項目のインデックス
);

戻り値

指定された項目の非選択時の背景色。

解説

この関数は、 指定された項目の非選択時の背景色(SFXRGBColor)を取得します。

参照

SFZListBoxControl::SetItemBackColor | SFXRGBColor


SFZListBoxControl::GetItemCount
項目数を取得します。
[ public, const ]
SInt32 GetItemCount(Void);

戻り値

項目の数。

解説

この関数は、項目の数を取得します。


SFZListBoxControl::GetItemEnable
指定された項目の有効フラグの値を取得します。
[ public, const ]
Bool GetItemEnable(
    SInt32 index   // 項目のインデックス
);

戻り値

  • 有効であるとき: true
  • 無効であるとき: false

解説

この関数は、指定された項目の有効フラグの値を取得します。

参照

SFZListBoxControl::SetItemEnable


SFZListBoxControl::GetItemForeColor
指定された項目の非選択時の前景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetItemForeColor(
    SInt32 index   // 項目のインデックス
);

戻り値

指定された項目の非選択時の前景色(テキストを描画する色)。

解説

この関数は、 指定された項目の非選択時の前景色(テキストを描画する色)を取得します。

参照

SFZListBoxControl::SetItemForeColor | SFXRGBColor


SFZListBoxControl::GetItemHeight
項目の高さを取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetItemHeight(Void);

戻り値

項目の高さ。[単位:ピクセル]

解説

この関数は、項目の高さを取得します。

[Note] 注意

SFZListBoxControl::SetFont 関数で設定されたフォントの高さと、 SFZListBoxControl::SetListMargin 関数で設定された上下の余白からリストボックスコントロールの項目の高さを計算します。

参照

SFZListBoxControl::SetFont | SFZListBoxControl::SetListMargin


SFZListBoxControl::GetItemKeyIcon
指定された項目の絵文字を取得します。
[ public, const ]
WChar GetItemKeyIcon(
    SInt32 index   // 項目のインデックス
);

戻り値

絵文字(WChar)。

解説

この関数は、指定された項目の絵文字を取得します。

参照

SFZListBoxControl::SetItemKeyIcon


SFZListBoxControl::GetItemText
指定された項目の文字列を取得します。
[ public, const ]
SFXWideStringConstRef GetItemText(
    SInt32 index   // 項目のインデックス
);

戻り値

指定された項目に設定されている文字列。

解説

この関数は、指定された項目の文字列を取得します。

参照

SFZListBoxControl::SetItemText


SFZListBoxControl::GetListMargin
リスト項目のマージンを取得します。
[ public, const ]
SFXMarginConstRef GetListMargin(Void);

戻り値

リスト項目のマージン(SFXMargin)。

解説

この関数は、リスト項目のマージンを取得します。

参照

SFZListBoxControl::SetListMargin


SFZListBoxControl::GetMaximumValue
項目数を取得します。
[ public, const ]
SInt32 GetMaximumValue(Void);

戻り値

リストボックスの項目数。

解説

この関数は、リストボックスの項目数を取得します。


SFZListBoxControl::GetScrollBarControl
スクロールバーコントロールを取得します。
[ public, const ]
SFYScrollBarControlSmpConstRef GetScrollBarControl(Void);

戻り値

スクロールバーコントロール。

解説

この関数は、リストボックスで使用されるスクロールバーコントロールを取得します。

[Note] 注意

開発者は取得したスクロールバーコントロールを使用して、スクロールバーの色を変更したりできます。

使用例

以下は、リストボックスで使用されるスクロールバーコントロールを取得するコードです。

// スクロールバーコントロールを取得する
SFZListBoxControlSmp    _list;
SFYScrollBarControlSmp  _bar;

_list = SFZListBoxControl::NewInstance();

if ((_bar = _list->GetScrollBarControl()) != null) {
    _bar->SetTrackColor(SFXRGBColor(0xDD, 0xFF, 0xDD, 0x00));
}

参照

SFYScrollBarControl | SFZListBoxControl::SetScrollBarControl


SFZListBoxControl::GetScrollBarWidth
スクロールバーの横幅を取得します。
[ public, const ]
SInt16 GetScrollBarWidth(Void);

戻り値

スクロールバーの横幅。

解説

この関数は、スクロールバーの横幅を取得します。

参照

SFZListBoxControl::SetScrollBarWidth


SFZListBoxControl::GetScrollDirection
スクロールの移動方向を取得します。
[ public, const ]
DirectionEnum GetScrollDirection(Void);

戻り値

スクロールの移動方向。

解説

この関数は、スクロールの移動方向を取得します。

参照

SFZListBoxControl::SetScrollDirection


SFZListBoxControl::GetScrollInterval
スクロールインターバルを取得します。[単位:ミリ秒]
[ public, const ]
UInt32 GetScrollInterval(Void);

戻り値

スクロールインターバル。[単位:ミリ秒]

解説

この関数は、スクロールインターバルを取得します。[単位:ミリ秒]

参照

SFZListBoxControl::SetScrollInterval


SFZListBoxControl::GetScrollRepeat
連続スクロールフラグの値を取得します。
[ public, const ]
Bool GetScrollRepeat(Void);

戻り値

  • 連続スクロールに設定されているとき: true
  • そうでないとき: false

解説

この関数は、連続スクロールフラグの値を取得します。

[Note] 注意

連続スクロールフラグが true に設定されていると、 最上部または最下部の項目が選択されているときに、それぞれ UP キーまたは DOWM キーを押下すると、 最下部または最上部の項目が選択項目となります。

連続スクロールフラグが false の場合は、 最上部または最下部の項目が選択されているときに、それぞれ UP キーまたは DOWM キーを押下しても選択項目に変化はありません。

参照

SFZListBoxControl::SetScrollRepeat


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

戻り値

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

解説

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

参照

SFZListBoxControl::SetScrollStep


SFZListBoxControl::GetSelBackColor
選択項目の背景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetSelBackColor(Void);

戻り値

選択項目の背景色。

解説

この関数は、選択項目の背景色を取得します。

参照

SFZListBoxControl::SetSelBackColor | SFZListBoxControl::GetSelForeColor | SFZListBoxControl::SetSelForeColor | SFXRGBColor


SFZListBoxControl::GetSelForeColor
選択項目の前景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetSelForeColor(Void);

戻り値

選択項目の前景色(テキストを描画する色)。

解説

この関数は、選択項目の前景色(テキストを描画する色)を取得します。

参照

SFZListBoxControl::SetSelForeColor | SFZListBoxControl::GetSelBackColor | SFZListBoxControl::SetSelBackColor | SFXRGBColor


SFZListBoxControl::GetTopValue
現在表示されている項目内で最も上の項目のインデックスを取得します。
[ public, const ]
SInt32 GetTopValue(Void);

戻り値

現在表示されている項目内で最も上の項目のインデックス。

解説

この関数は、現在表示されている項目内で最も上の項目のインデックスを取得します。


SFZListBoxControl::GetUpKey
UP キーを取得します。
[ public, const ]
AVKType GetUpKey(Void);

戻り値

UP キー。

解説

この関数は、SFZListBoxControl::SetUpKey 関数により設定された UP キーを取得します。

参照

SFZListBoxControl::SetUpKey | SFZListBoxControl::GetDownKey | SFZListBoxControl::SetDownKey | AVKType


SFZListBoxControl::GetWaitInterval
スクロール開始までの待ち時間を設定します。[単位:ミリ秒]
[ public, const ]
UInt32 GetWaitInterval(Void);

戻り値

スクロール開始までの待ち時間。[単位:ミリ秒]

解説

この関数は、スクロール開始までの待ち時間を設定します。[単位:ミリ秒]

参照

SFZListBoxControl::SetWaitInterval


SFZListBoxControl::HandleAccessKey
アクセスキーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleAccessKey(
    AVKType key   // アクセスキー
);

解説

この関数は、SFZListBoxControl::SetItemAccessKey 関数で設定したアクセスキーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

独自のキーイベント処理を行いたい場合は、この関数をオーバーライドします。

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

SFZListBoxControl::SetItemAccessKey 関数で設定したアクセスキーを設定した項目が SFZListBoxControl::SetItemEnable 関数により項目の有効フラグが true に設定されている場合、 SFYControl::SetCurrentValue 関数を呼び出してその項目を現在の選択項目とします。 そして、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, 指定されたアクセスキーが設定されている項目のインデックス)] を送信します。

項目の有効フラグが false に設定されている場合、何も処理されません。

同じアクセスキーが複数の項目に設定されている場合は、最初の項目に設定されたものだけが有効になります。

内部実装

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

struct ListItem {
    SFXWideString                       text;
    AVKType                             key;
    WChar                               keyIcon;
    SFXRGBColor                         foreColor;
    SFXRGBColor                         backColor;
    Bool                                enable;
};

ListItemArray                   _item;

/*protected virtual */Void SFZListBoxControl::HandleAccessKey(AVKType key)
{
    ListItemPtr                                 item;

    for (SInt32 i = 0; i < GetItemCount(); ++i) {
        if ((item = GetListItem(i)) != null) {
            if (item->key == key) {
                if (item->enable) {
                    SetCurrentValue(i);
                    Invalidate();
                    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, i), false);
                    break;
                }
            }
        }
    }
    return;
}// SFZListBoxControl::HandleAccessKey //

/*private */SFZListBoxControl::ListItemPtr SFZListBoxControl::GetListItem(SInt32 param) const
{
    ListItemPtr                                 result(null);

    if (0 <= param && param < GetItemCount()) {
        result = _item.Get(param);
    }
    return result;
}// SFZListBoxControl::GetListItem //

参照

SFZListBoxControl::SetItemAccessKey | SFZListBoxControl::SetItemEnable | SFYControl::GetCurrentValue | SFXEvent | 結果イベント | キーイベント[SFEVT_KEY]


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

解説

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

指定した矩形に収まる範囲内で最適なサイズを計算します。

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

  1. 引数の矩形をボックス枠用に上下左右に 3 ピクセルずつ縮小した矩形 R を計算します。 このとき、矩形 R の高さを R.h、幅を R.w とします。
  2. 項目に設定されたアイコンキャラクタの幅、 使用しているフォントの幅と文字列、 項目の左右のマージンのサイズから項目の幅を計算します。
  3. 使用しているフォントの幅、項目のアイコンと文字列、項目の左右のマージンのサイズから項目の幅を計算します。
  4. R.h と (項目の高さ) × (項目の数) の小さい方の数値を height とします。
  5. (項目の高さ) × (項目の数) > R.h の場合は、スクロールバーが付加されます。
  6. R.w と [(最も幅の大きい項目の幅) + (付加されていればスクロールバーの幅)] の小さい方の数値を width とします。
  7. 高さが height、幅が width である矩形をボックス枠用に上下左右に 3 ピクセルずつ拡大した矩形を計算します。
  8. この矩形を返します。
[Note] 項目のフォント、アイコンキャラクタ、文字列、マージン

項目内の要素であるフォント、アイコンキャラクタ、文字列、マージンは、 SFZListBoxControl::SetFont 関数、 SFZListBoxControl::SetItemKeyIcon 関数、 SFZListBoxControl::SetItemText 関数、 SFZListBoxControl::SetListMargin 関数を使用して設定されます。

アイコンキャラクタや文字列は設定されないこともあります。 設定されていない項目内の要素の長さは 0 として計算されます。

[Note] スクロールバーの横幅

スクロールバーの幅は、SFZListBoxControl::SetScrollBarWidth 関数で設定される幅です。

[Note] ボックス枠用のマージン

ボックスコントロールのマージンは、SFXMargin(3, 3, 3, 3) で表される領域です。 詳細は SFYBoxControl::GetBoxMargin 関数の解説を参照してください。

[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 仮想関数をオーバーライドして処理を記述します。

内部実装

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

struct ListItem {
    SFXWideString                       text;
    AVKType                             key;
    WChar                               keyIcon;
    SFXRGBColor                         foreColor;
    SFXRGBColor                         backColor;
    Bool                                enable;
};

/*protected virtual */Void SFZListBoxControl::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    ListItemPtr                                 item;
    SInt16                                      width;
    SInt16                                      maxWidth;
    SInt16                                      barWidth;
    SInt16                                      height;
    SInt32                                      num;

    maxWidth = 0;
    barWidth = 0;
    height = GetItemHeight();
    rectangle->Deflate(GetBoxMargin());
    num = rectangle->GetHeight() / height;
    if (num > 0) {
        if (num < GetItemCount()) {
            barWidth = _barWidth;
        }
        else {
            num = GetItemCount();
        }
        rectangle->SetHeight(static_cast<SInt16>(height * num));
    }
    for (SInt32 i = 0; i < GetItemCount(); ++i) {
        if ((item = GetListItem(i)) != null) {
            width = SFXGraphics::MeasureSingleText(_font, item->text);
            if (item->keyIcon != null) {
                width += GetFontSize().GetWidth();
            }
            maxWidth = (maxWidth < width) ? width : maxWidth;
        }
    }
    maxWidth += barWidth;
    rectangle->Deflate(GetListMargin());
    if (maxWidth < rectangle->GetWidth()) {
        rectangle->SetWidth(maxWidth);
    }
    rectangle->Inflate(GetListMargin());
    rectangle->Inflate(GetBoxMargin());
    return;
}// SFZListBoxControl::HandleBoundOptimize //

参照

SFZListBoxControl::SetFont | SFZListBoxControl::SetItemKeyIcon | SFZListBoxControl::SetItemText | SFZListBoxControl::SetListMargin | SFZListBoxControl::SetScrollBarWidth | SFYResponder::GetSuitableBound | SFYBoxControl::GetBoxMargin | SFXMargin | SFXEvent | 領域イベント[SFEVT_RESPONDER_BOUND]


SFZListBoxControl::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 要素(始点)はこの関数内で変更しないことを推奨します。

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

  1. 使用しているフォントの高さと、項目の上下のマージンのサイズから項目の高さを計算します。
  2. 項目に設定されたアイコンキャラクタの幅、 使用しているフォントの幅と文字列、 項目の左右のマージンのサイズから項目の幅を計算します。
  3. 高さが (項目の高さ) × (項目の数)、幅が (リストボックスで最も幅の大きい項目の幅) である矩形を計算します。
  4. この矩形をボックス枠用に上下左右に 3 ピクセルずつ拡大した矩形を計算します。
  5. この矩形を返します。
[Note] 項目のフォント、アイコンキャラクタ、文字列、マージン

項目内の要素であるフォント、アイコンキャラクタ、文字列、マージンは、 SFZListBoxControl::SetFont 関数、 SFZListBoxControl::SetItemKeyIcon 関数、 SFZListBoxControl::SetItemText 関数、 SFZListBoxControl::SetListMargin 関数を使用して設定されます。

アイコンキャラクタや文字列は設定されないこともあります。設定されていない項目内の要素の長さは 0 として計算されます。

[Note] ボックス枠用のマージン

ボックスコントロールのマージンは、SFXMargin(3, 3, 3, 3) で表される領域です。 詳細は SFYBoxControl::GetBoxMargin 関数の解説を参照してください。

[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 仮想関数をオーバーライドして処理を記述します。

内部実装

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

struct ListItem {
    SFXWideString                       text;
    AVKType                             key;
    WChar                               keyIcon;
    SFXRGBColor                         foreColor;
    SFXRGBColor                         backColor;
    Bool                                enable;
};

/*protected virtual */Void SFZListBoxControl::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    ListItemPtr                                 item;
    SInt16                                      width;
    SInt16                                      maxWidth;

    maxWidth = 0;
    rectangle->Deflate(GetBoxMargin());
    for (SInt32 i = 0; i < GetItemCount(); ++i) {
        if ((item = GetListItem(i)) != null) {
            width = SFXGraphics::MeasureSingleText(_font, item->text);
            if (item->keyIcon != null) {
                width += GetFontSize().GetWidth();
            }
            maxWidth = (maxWidth < width) ? width : maxWidth;
        }
    }
    rectangle->SetHeight(static_cast<SInt16>(GetItemHeight() * GetItemCount()));
    rectangle->Deflate(GetListMargin());
    rectangle->SetWidth(maxWidth);
    rectangle->Inflate(GetListMargin());
    rectangle->Inflate(GetBoxMargin());
    return;
}// SFZListBoxControl::HandleBoundRequest //

参照

SFZListBoxControl::SetFont | SFZListBoxControl::SetItemKeyIcon | SFZListBoxControl::SetItemText | SFZListBoxControl::SetListMargin | SFYResponder::GetSuitableBound | SFYBoxControl::GetBoxMargin | SFXMargin | SFXEvent | 実領域 | 領域イベント[SFEVT_RESPONDER_BOUND]


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

解説

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

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

[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 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

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

内部実装

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

/*protected virtual */Void SFZListBoxControl::HandleBoundVirtual(Void)
{
    SFXMargin                                   margin(GetBoxMargin());
    SInt32                                      field;

    StopScroll();
    field = (GetLocalBound().GetHeight() - margin.GetTop() - margin.GetBottom()) / GetItemHeight();
    field = (field > 0) ? field : 1;
    SetFieldValue(field);
    _offset = 0;
    Relocate();
    if (_state != STATE_IDLE) {
        StartScroll();
    }
    return;
}// SFZListBoxControl::HandleBoundVirtual //

/*private */Void SFZListBoxControl::Relocate(Void)
{
    SFXRectangle                                rc(GetLocalBound());

    if (_bar != null) {
        rc.Deflate(GetBoxMargin());
        rc.SubRight(_barWidth);
        _bar->SetRealBound(SFXRectangle(rc.GetRight(), rc.GetTop(), _barWidth, rc.GetHeight()));
    }
    return;
}// SFZListBoxControl::Relocate //

参照

SFYResponder::SetRealBound | SFYResponder::SetVirtualBound | 領域イベント[SFEVT_RESPONDER_BOUND]


SFZListBoxControl::HandleEscapeKey
エスケープキーのキーイベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleEscapeKey(Void);

解説

この関数は、SFZListBoxControl::SetEscapeKey 関数で設定した ESCAPE キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

独自のキーイベント処理を行いたい場合は、この関数をオーバーライドします。

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

デフォルトの実装では、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ESCAPE, 0)] を送信します。

内部実装

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

/*protected virtual */Void SFZListBoxControl::HandleEscapeKey(Void)
{
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ESCAPE, 0), false);
    return;
}// SFZListBoxControl::HandleEscapeKey //

参照

SFZListBoxControl::SetEscapeKey | SFXEvent | 結果イベント[SFEVT_RESPONDER_RESULT] | キーイベント[SFEVT_KEY]


SFZListBoxControl::HandleOperateKey
操作キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleOperateKey(Void);

解説

この関数は、SFYBoxControl::SetOperateKey 関数で設定した操作キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

独自のキーイベント処理を行いたい場合は、この関数をオーバーライドします。

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

SFZListBoxControl::SetItemEnable 関数により選択された項目の有効フラグが true に設定されている場合、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, SFYControl::GetCurrentValue 関数の戻り値)] を送信します。

項目の有効フラグが false に設定されている場合、結果イベントを送信しません。

内部実装

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

struct ListItem {
    SFXWideString                       text;
    AVKType                             key;
    WChar                               keyIcon;
    SFXRGBColor                         foreColor;
    SFXRGBColor                         backColor;
    Bool                                enable;
};

/*protected virtual */Void SFZListBoxControl::HandleOperateKey(Void)
{
    ListItemPtr                                 item;

    if ((item = GetListItem(GetCurrentValue())) != null) {
        if (item->enable) {
            InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false);
        }
    }
    return;
}// SFZListBoxControl::HandleOperateKey //

参照

SFYBoxControl::SetOperateKey | SFXEvent | SFZListBoxControl::SetItemEnable | キーイベント[SFEVT_KEY]


SFZListBoxControl::HandleRenderRequest
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
[ protected, virtual, const ]
Void HandleRenderRequest(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
);

解説

この関数は、 描画イベント [SFXEvent(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST, graphics)] を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装は、リストボックスコントロールを描画します。

[Note] レスポンダの描画手順

  1. SFYResponder::Invalidate 関数を使用して再描画領域を登録します。
  2. イベントループの最後、 アプリ開始/レジュームまたは優先的イベントハンドラ終了のタイミング、 あるいは、コールバックなどのイベントループの外で、 自動的に、あるいは、明示的に SFYResponder::Render 関数を呼び出します。
  3. 描画エンジンが起動されます。
  4. 再描画が必要なレスポンダだけが描画イベントを受信します。
  5. SFYWidget クラスを継承するレスポンダが描画イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した描画ハンドラの処理により、 SFYWidget::HandleRenderRequest 仮想関数が呼び出されます。 その後、描画ハンドラが登録した順に呼び出されます。
  6. 実際にレスポンダが描画されます。

[Tip] Tip
描画ハンドラの宣言と登録の手間を省けるので、 通常は SFYWidget::HandleRenderRequest 仮想関数だけを利用してレスポンダを描画します。

内部実装

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

struct ListItem {
    SFXWideString                       text;
    AVKType                             key;
    WChar                               keyIcon;
    SFXRGBColor                         foreColor;
    SFXRGBColor                         backColor;
    Bool                                enable;
};

/*protected virtual */Void SFZListBoxControl::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    SFXRectangle                                rc(GetLocalBound());

    DrawBox(graphics, rc);
    DrawItemList(graphics, rc.Deflate(GetBoxMargin()));
    return;
}// SFZListBoxControl::HandleRenderRequest //

/*private */Void SFZListBoxControl::DrawItemList(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle) const
{
    SFXRectangle                                rc(rectangle);
    SInt16                                      itemHeight(GetItemHeight());

    if (_bar != null && _bar->GetStateVisible()) {
        rc.SubRight(_barWidth);
    }
    if (rc.GetHeight() > itemHeight) {
        rc.SetHeight(itemHeight);
    }
    for (SInt32 i = 0; i < GetFieldValue(); ++i) {
        if (GetTopValue() + i < GetItemCount()) {
            DrawItem(graphics, rc, i + GetTopValue());
            if (_line) {
                graphics->DrawLine(rc.GetEdgeBottom(), _color.gridLine);
            }
        }
        rc.AddY(itemHeight);
    }
    return;
}// SFZListBoxControl::DrawItemList //

/*private */Void SFZListBoxControl::DrawItem(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle, SInt32 index) const
{
    ListItemPtr                                 item;
    SFXRectangle                                rc(rectangle);
    SFXGrid                                     grid;
    SFXRGBColor                                 fore;
    SFXRGBColor                                 back;

    if ((item = GetListItem(index)) != null) {
        fore.Set(item->foreColor);
        back.Set(item->backColor);
        if (!item->enable || !GetStateActive(true)) {
            (fore.GetBrightness() > 0x7F) ? fore.SubRGB(RGB_ACTIVE) : fore.AddRGB(RGB_ACTIVE);
        }
        else if (index == GetCurrentValue()) {
            fore.Set(_color.selFore);
        }
        if (!item->enable) {
            (back.GetBrightness() > 0x7F) ? back.SubRGB(RGB_ENABLE) : back.AddRGB(RGB_ENABLE);
        }
        if (index == GetCurrentValue()) {
            back.Set(_color.selBack);
        }
        graphics->FillRectangle(rectangle, back);
        rc.Deflate(GetListMargin());
        if (item->keyIcon != 0) {
            SFXRectangle iconRect(rc);
            iconRect.SetSize(GetFontSize());
            graphics->SetFont(_font);
            graphics->DrawSingleText(SFXWideString(item->keyIcon), iconRect, fore, IDF_ALIGN_LEFT);
            rc.AddX(iconRect.GetWidth());
        }
        grid = rc.GetOrigin();
        if (index == GetCurrentValue()) {
            grid.AddX(_offset);
        }
        graphics->SetFont(_font);
        graphics->DrawSingleText(item->text, grid, rc, fore, IDF_ALIGN_LEFT);
    }
    return;
}// SFZListBoxControl::DrawItem //

/*private */inline SFXSize SFZListBoxControl::GetFontSize(Void) const
{
    return _size;
}// SFZListBoxControl::GetFontSize //

参照

SFYResponder::Invalidate | SFYResponder::Render | SFYResponder::InvokeBackward | 描画イベント[SFEVT_RESPONDER_RENDER] | 描画イベント専用ハンドラ[XANDLER_DECLARE_VOIDRENDER] | 描画処理


SFZListBoxControl::Insert
項目を挿入します。
[ public ]
SFCError Insert(
    SInt32 index           // 項目のインデックス
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
);
[ public ]
SFCError Insert(
    SInt32 index           // 項目のインデックス
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
    AVKType key            // ダイレクトアクセスキー
    WChar keyIcon          // キーアイコン
);
[ public ]
SFCError Insert(
    SInt32 index                 // 項目のインデックス
    SFXWideStringConstRef text   // 項目のテキスト
);
[ public ]
SFCError Insert(
    SInt32 index                 // 項目のテキスト
    SFXWideStringConstRef text   // 項目のテキスト
    AVKType key                  // ダイレクトアクセスキー
    WChar keyIcon                // キーアイコン
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_FAILED

解説

この関数は、 リストボックスに項目を挿入します。

インデックスが 0 以下の場合は最初に挿入されます。

インデックスが項目数以上の場合は最後に挿入されます。

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

[Note] 注意

この関数で項目を追加した後、 項目数(SFZListBoxControl::GetItemCount 関数の戻り値)は 1 だけ増加します。

参照

SFZListBoxControl::InsertFirst | SFZListBoxControl::InsertLast| SFZListBoxControl::Remove | SFZListBoxControl::GetItemCount


SFZListBoxControl::InsertFirst
項目を最初に挿入します。
[ public ]
SFCError InsertFirst(
    SFXPathConstRef path   // 項目のインデックス
    UInt16 id              // テキストオブジェクト ID
);
[ public ]
SFCError InsertFirst(
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
    AVKType key            // ダイレクトアクセスキー
    WChar keyIcon          // キーアイコン
);
[ public ]
SFCError InsertFirst(
    SFXWideStringConstRef text   // 項目のテキスト
);
[ public ]
SFCError InsertFirst(
    SFXWideStringConstRef text   // 項目のテキスト
    AVKType key                  // ダイレクトアクセスキー
    WChar keyIcon                // キーアイコン
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_FAILED

解説

この関数は、 リストボックスの最初に項目を挿入します。

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

[Note] 注意

この関数で項目を追加した後、 項目数(SFZListBoxControl::GetItemCount 関数の戻り値)は 1 だけ増加します。

参照

SFZListBoxControl::Insert | SFZListBoxControl::InsertLast | SFZListBoxControl::RemoveFirst | SFZListBoxControl::GetItemCount


SFZListBoxControl::InsertLast
項目を最後に挿入します。
[ public ]
SFCError InsertLast(
    SFXPathConstRef path   // 項目のインデックス
    UInt16 id              // テキストオブジェクト ID
);
[ public ]
SFCError InsertLast(
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
    AVKType key            // ダイレクトアクセスキー
    WChar keyIcon          // キーアイコン
);
[ public ]
SFCError InsertLast(
    SFXWideStringConstRef text   // 項目のテキスト
);
[ public ]
SFCError InsertLast(
    SFXWideStringConstRef text   // 項目のテキスト
    AVKType key                  // ダイレクトアクセスキー
    WChar keyIcon                // キーアイコン
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_FAILED

解説

この関数は、 リストボックスの最後に項目を挿入します。

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

[Note] 注意

この関数で項目を追加した後、 項目数(SFZListBoxControl::GetItemCount 関数の戻り値)は 1 だけ増加します。

参照

SFZListBoxControl::Insert| SFZListBoxControl::InsertFirst | SFZListBoxControl::RemoveLast | SFZListBoxControl::GetItemCount


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

引数

exception

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

戻り値

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

解説

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

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

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

使用例

以下は、リストボックスのインスタンスを生成するためのコードです。

// リストボックスのインスタンスを生成する
SFCError error;
SFZListBoxControlSmp _listbox;

if ((_listbox = SFZListBoxControl::NewInstance(&error)) != null) {
    // ...
}

SFZListBoxControl::Remove
指定されたインデックスの位置または範囲の項目を削除します。
[ public ]
Void Remove(
    SInt32 index   // 削除する項目のインデックス
);
[ public ]
Void Remove(
    SInt32 begin   // 削除開始位置 (この位置を含む)
    SInt32 end     // 削除終了位置 (この位置を含まない)
);

解説

この関数は、 指定されたインデックスの位置または範囲の項目を削除します。

削除する項目の位置が 0 より小さい場合、または項目数以上の場合、項目の削除は行われません。

削除開始位置が項目数以上の場合、または 削除終了位置が 0 以下の場合、項目の削除は行われません。

削除開始位置が 0 より小さい場合、削除開始位置は 0 に再設定されます。

削除終了位置が項目数より大きい場合、削除終了位置は項目数に再設定されます。

[Note] 注意

この関数で項目を削除した後、 項目数(SFZListBoxControl::GetItemCount 関数の戻り値)は 1 だけ減少します。

使用例

SFZListBoxControlSmp listbox;

// ・・・インスタンスの作成等・・・ 

// 項目を追加
if (listbox->InsertLast("0番目") == SFERR_NO_ERROR) {
    // 項目を追加
    if (listbox->InsertLast("1番目") == SFERR_NO_ERROR) {
        // 項目を追加
        if (listbox->InsertLast("2番目") == SFERR_NO_ERROR) {
            // 項目を追加
            if (listbox->InsertLast("3番目") == SFERR_NO_ERROR) {
                // 2 番目を選択する
                listbox->SetCurrentValue(2);

                //////////////////////////
                // リストボックスの状態 //
                // 0: "0番目"           //
                // 1: "1番目"           //
                // 2: "2番目" ←        //
                // 3: "3番目"           //
                //////////////////////////

                // 項目1 から項目2 までを削除する
                listbox->Remove(1, 3);

                // 現在値 (2) が最大値 (2) 以上になるため、
                // 現在値は [最大値 - 1] (1) に設定される

                //////////////////////////
                // リストボックスの状態 //
                // 0: "0番目"           //
                // 1: "3番目" ←        //
                //////////////////////////
            }
        }
    }
}

参照

SFZFlexListBoxControl::Clear | SFZFlexListBoxControl::RemoveFirst | SFZFlexListBoxControl::RemoveLast | SFZFlexListBoxControl::Insert | SFZListBoxControl::GetItemCount


SFZListBoxControl::RemoveFirst
先頭の項目を削除します。
[ public ]
Void RemoveFirst(Void);

解説

この関数は、先頭の項目を削除します。

[Note] 注意

この関数で項目を削除した後、 項目数(SFZListBoxControl::GetItemCount 関数の戻り値)は 1 だけ減少します。

参照

SFZListBoxControl::Clear | SFZListBoxControl::Remove | SFZListBoxControl::RemoveLast | SFZListBoxControl::GetItemCount


SFZListBoxControl::RemoveLast
末尾の項目を削除します。
[ public ]
Void RemoveLast(Void);

解説

この関数は、末尾の項目を削除します。

[Note] 注意

この関数で項目を削除した後、 項目数(SFZListBoxControl::GetItemCount 関数の戻り値)は 1 だけ減少します。

参照

SFZListBoxControl::Clear | SFZListBoxControl::Remove | SFZListBoxControl::RemoveFirst | SFZListBoxControl::InsertLast | SFZListBoxControl::GetItemCount


SFZListBoxControl::SetDefaultItemBackColor
非選択項目のデフォルトの背景色を設定します。
[ public ]
Void SetDefaultItemBackColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、 非選択項目のデフォルトの背景色を設定します。

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

[Note] リストボックスコントロールの非選択項目の背景色

リストボックスコントロールの非選択項目の背景色は、項目毎に変えることが可能です。

すべての項目の背景色を同じ色にしたい場合は、 この関数を使用してデフォルトの背景色を指定し、 個別に背景色を指定できる SFZListBoxControl::SetItemBackColor 関数は使用しません。

選択項目の背景は、 常に SFZListBoxControl::SetSelBackColor 関数で指定した色で描画されます。

[Note] 項目の有効フラグが false に設定されているときの非選択項目の背景色

SFZListBoxControl::SetItemEnable 関数を使用して項目の有効フラグが false に設定されているとき、 この関数によって設定される色で背景は描画されません。

このときは、 この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x33 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x33 を加算した色で背景は描画されます。

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

参照

SFZListBoxControl::GetDefaultItemBackColor | SFZListBoxControl::SetDefaultItemForeColor | SFZListBoxControl::SetItemBackColor | SFZListBoxControl::SetSelBackColor | SFZListBoxControl::SetItemEnable | SFXRGBColor::GetBrightness | SFXRGBColor


SFZListBoxControl::SetDefaultItemForeColor
非選択項目のデフォルトの前景色を設定します。
[ public ]
Void SetDefaultItemForeColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、 非選択項目のデフォルトの前景色(テキストを描画する色)を設定します。

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

[Note] リストボックスコントロールの非選択項目の前景色

リストボックスコントロールの非選択項目の前景色は、項目毎に変えることが可能です。

すべての項目の前景色を同じ色にしたい場合は、 この関数を使用してデフォルトの前景色を指定し、 個別に前景色を指定できる SFZListBoxControl::SetItemForeColor 関数は使用しません。

選択項目のテキストは、 SFZListBoxControl::SetItemEnable 関数を使用して項目の有効フラグが false に設定されているとき、 およびリストボックスコントロールの状態が非活性化状態にあるときを除いて、 SFZListBoxControl::SetSelForeColor 関数で指定した色で描画されます。

[Note] 項目の有効フラグが false に設定されているときの非選択項目の前景色

SFZListBoxControl::SetItemEnable 関数を使用して項目の有効フラグが false に設定されているとき、 またはリストボックスコントロールの状態が非活性化状態にあるときは、 この関数によって設定される色でテキストは描画されません。

このときは、 この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x33 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x33 を加算した色で背景は描画されます。

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

参照

SFZListBoxControl::GetDefaultItemForeColor | SFZListBoxControl::SetDefaultItemBackColor | SFZListBoxControl::SetItemForeColor | SFZListBoxControl::SetSelForeColor | SFZListBoxControl::SetItemEnable | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFZListBoxControl::SetDownKey
DOWN キーを設定します。
[ public ]
Void SetDownKey(
    AVKType param   // 設定するキー
);

解説

この関数は、 リストボックスコントロールの DOWN キーを設定します。

デフォルト値: AVK_DOWN

[Note] 注意

DOWN キーが押下された場合、 現在の選択項目よりも1つ下の項目がリストの新しい選択項目になります。

新しい選択項目が実領域内に完全に表示されていない場合は、 実領域の下端の位置に来るようにスクロールします。

連続スクロールフラグの値が true、かつ、 現在の選択項目が末尾の項目であるときに DOWN キーを押下すると、 先頭の項目が新しい選択項目となり、実領域の下端の位置に来るようにスクロールします。 このとき、末尾の項目は下から 2 行目の位置に表示されます(先頭の項目は最下行に表示されます)。

[Note] 値イベント

選択項目が変化した場合、 リストボックスコントロールは値イベント [SFXEvent(SFEVT_RESPONDER_VALUE, SFP16_VALUE_CURRENT, 選択された項目のインデックス)] を受信します。

参照

SFZListBoxControl::GetDownKey | SFZListBoxControl::GetUpKey | SFZListBoxControl::SetUpKey | SFZListBoxControl::SetScrollRepeat | SFXEvent | 値イベント [SFEVT_RESPONDER_VALUE] | AVKType


SFZListBoxControl::SetEscapeKey
ESCAPE キーを設定します。
[ public ]
Void SetEscapeKey(
    AVKType param   // 設定するキー
);

解説

この関数は、 リストボックスの ESCAPE キーを設定します。

デフォルト値: AVK_CLR

[Note] 注意

ESCAPE キーが押下されると、 SFZListBoxControl::HandleEscapeKey 関数が呼び出されます。

参照

SFZListBoxControl::GetEscapeKey | SFZListBoxControl::HandleEscapeKey | AVKType


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

解説

この関数は、 リストボックスの項目のフォントを設定します。

デフォルト値: AEE_FONT_NORMAL

参照

SFZListBoxControl::GetFont | BREW API AEEFont


SFZListBoxControl::SetGridLineColor
グリッド線の色を設定します。
[ public ]
Void SetGridLineColor(
    SFXRGBColorConstRef param   // グリッド線の色
);

解説

この関数は、グリッド線の色を設定します。

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

[Note] 注意

グリッド線は、SFZListBoxControl::SetGridLineEnable 関数を使用して、 有効フラグが true に設定されているときだけ描画されます。

[Caution] グリッド線の描画領域

グリッド線は各項目の矩形領域の最下端1ピクセルの線上に描画されます。 グリッド線有効フラグを true に設定する場合は、 SFZListBoxControl::SetListMargin 関数を使用してその分の余白領域を設定することを推奨します。

参照

SFZListBoxControl::GetGridLineColor | SFZListBoxControl::SetGridLineEnable | SFXRGBColor


SFZListBoxControl::SetGridLineEnable
グリッド線有効フラグを設定します。
[ public ]
Void SetGridLineEnable(
    Bool param   // 設定する値
);

解説

この関数は、グリッド線有効フラグを設定します。

デフォルト値は false です。

[Note] 注意

グリッド線有効フラグが true に設定されているときだけ、 グリッド線は SFZListBoxControl::SetGridLineColor 関数で設定した色で描画されます。

[Caution] グリッド線の描画領域

グリッド線は各項目の矩形領域の最下端1ピクセルの線上に描画されます。 グリッド線有効フラグを true に設定する場合は、 SFZListBoxControl::SetListMargin 関数を使用してその分の余白領域を設定することを推奨します。

参照

SFZListBoxControl::GetGridLineEnable | SFZListBoxControl::SetGridLineColor | SFZListBoxControl::SetListMargin


SFZListBoxControl::SetItemAccessKey
指定された項目にアクセスキーを設定します。
[ public ]
SFCError SetItemAccessKey(
    SInt32 index   // 項目のインデックス
    AVKType key    // アクセスキー
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM

解説

この関数は、項目のアクセスキーを設定します。

[Note] 注意

この関数を使用して設定されたアクセスキーが押下されると、 SFZListBoxControl::HandleAccessKey 関数が呼び出されます。

使用例

項目のアクセスキーを設定するコードです。

// 最初の項目に、アクセスキーとして AVK_1 を設定する
_listbox->SetItemAccessKey(0, AVK_1);

参照

SFZListBoxControl::GetItemAccessKey | SFZListBoxControl::HandleAccessKey | AVKType


SFZListBoxControl::SetItemBackColor
指定された項目の非選択時の背景色を設定します。
[ public ]
SFCError SetItemBackColor(
    SInt32 index                // 項目のインデックス
    SFXRGBColorConstRef param   // 背景色
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM

解説

この関数は、 指定された項目の非選択時の背景色を設定します。

デフォルト値: SFZListBoxControl::SetDefaultItemBackColor 関数で設定されている色。 SFZListBoxControl::SetDefaultItemBackColor 関数でデフォルトの背景色を設定していない場合は、 SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]。

SFZListBoxControl::SetItemEnable 関数を使用して項目の有効フラグが false に設定されているとき、 この関数によって設定される色で背景は描画されません。

このときは、 この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x33 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x33 を加算した色で背景は描画されます。

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

[Note] 非選択項目の前景色

SFZListBoxControl::SetItemForeColor 関数の解説を参照してください。

[Note] 選択項目の背景色

SFZListBoxControl::SetSelBackColor 関数の解説を参照してください。

[Note] 選択項目の前景色

SFZListBoxControl::SetSelForeColor 関数の解説を参照してください。

参照

SFZListBoxControl::SetDefaultItemBackColor | SFZListBoxControl::GetItemBackColor | SFZListBoxControl::SetItemForeColor | SFZListBoxControl::SetItemEnable | SFXRGBColor::GetBrightness | SFZListBoxControl::SetSelForeColor | SFZListBoxControl::SetSelBackColor | SFXRGBColor


SFZListBoxControl::SetItemEnable
指定された項目の有効フラグを設定します。
[ public ]
SFCError SetItemEnable(
    SInt32 index   // 項目のインデックス
    Bool param     // 設定する値
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM

解説

この関数は、 指定された項目の有効フラグを設定します。

デフォルト値: true

[Note] 項目の有効フラグが false に設定されているとき

操作キーやアクセスキーが押下されても結果イベントは送信されません。

項目の前景色(テキストを描画する色)と非選択項目の背景色は以下の通りです。

項目の前景色は、SFZListBoxControl::SetItemForeColor 関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色になります。

非選択項目の背景色は、SFZListBoxControl::SetItemBackColor 関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x33 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x33 を加算した色になります。

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

[Caution] 注意

項目の有効フラグが false に設定されているとき、 選択項目の前景色も上述の補正色になります。 SFZListBoxControl::SetSelForeColor 関数で設定した色で描画されません。

選択項目の背景色は、 項目の有効フラグの値に関係なく SFZListBoxControl::SetSelBackColor 関数で設定した色です。

参照

SFZListBoxControl::GetItemEnable | SFZListBoxControl::HandleOperateKey | SFZListBoxControl::HandleAccessKey | SFZListBoxControl::SetItemForeColor | SFZListBoxControl::SetItemBackColor | SFZListBoxControl::SetSelForeColor | SFZListBoxControl::SetSelBackColor | SFZListBoxControl::SetSelForeColor


SFZListBoxControl::SetItemForeColor
指定された項目の非選択時の前景色を設定します。
[ public ]
Void SetItemForeColor(
    SInt32 index                // 項目のインデックス
    SFXRGBColorConstRef param   // 前景色
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM

解説

この関数は、 指定された項目の非選択時の前景色(テキストを描画する色)を設定します。

デフォルト値: SFZListBoxControl::SetDefaultItemForeColor 関数で設定されている色。 SFZListBoxControl::SetDefaultItemForeColor 関数でデフォルトの前景色を設定していない場合は、 SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色]。

SFZListBoxControl::SetItemEnable 関数を使用して項目の有効フラグが false に設定されているとき、 またはリストボックスコントロールの状態が非活性化状態にあるときは、 この関数によって設定される色で項目のテキストは描画されません。

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

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

[Note] 非選択項目の背景色

SFZListBoxControl::SetItemBackColor 関数の解説を参照してください。

[Note] 選択項目の前景色

SFZListBoxControl::SetSelForeColor 関数の解説を参照してください。

[Note] 選択項目の背景色

SFZListBoxControl::SetSelBackColor 関数の解説を参照してください。

参照

SFZListBoxControl::SetDefaultItemForeColor | SFZListBoxControl::GetItemForeColor | SFZListBoxControl::SetItemBackColor | SFZListBoxControl::SetSelForeColor | SFZListBoxControl::SetSelBackColor | SFZListBoxControl::SetItemEnable | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFZListBoxControl::SetItemKeyIcon
指定された項目に絵文字を設定します。
[ public ]
SFCError SetItemKeyIcon(
    SInt32 index   // 項目のインデックス
    WChar param    // 絵文字
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM

解説

この関数は、 指定された項目の絵文字を設定します。

使用例

指定された項目の絵文字を設定するコードです。

// 最初の項目に、絵文字として 0xFBF6 を設定する
_listbox->SetItemKeyIcon(0, 0xFBF6);

参照

SFZListBoxControl::GetItemKeyIcon


SFZListBoxControl::SetItemText
指定された項目に文字列を設定します。
[ public ]
SFCError SetItemText(
    SInt32 index           // 項目のインデックス
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // テキストオブジェクト ID
);
[ public ]
SFCError SetItemText(
    SInt32 index                 // 項目のインデックス
    SFXWideStringConstRef item   // テキスト
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_FAILED

解説

この関数は、 指定された項目にテキストを設定します。

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

参照

SFZListBoxControl::GetItemText


SFZListBoxControl::SetListMargin
リスト項目のマージンを設定します。
[ public ]
Void SetListMargin(
    SFXMarginConstRef param   // 設定するマージン
);

解説

この関数は、 リスト項目のマージンを設定します。

デフォルト値: SFXMargin(1, 2)

参照

SFZListBoxControl::GetListMargin | SFXMargin


SFZListBoxControl::SetScrollBarControl
スクロールバーコントロールを設定します。
[ public ]
SFCError SetScrollBarControl(
    SFYScrollBarControlSmpConstRef param   // スクロールバーコントロール
);

解説

この関数は、リストボックスで使用されるスクロールバーコントロールを設定します。

開発者が独自のスクロールバーを設定したいときに利用します。

使用例

以下は、カスタムスクロールバーを設定するコードです。

// 独自のスクロールバーコントロール
class CustomScrollBarControl : public SFYScrollBarControl {
    // 独自の定義
};

Void UserApplication::SomeFunction {
    SFZListBoxControlSmp        list;
    CustomScrollBarControlSmp   bar;

    // リストボックスの生成
    list = SFZListBoxControl::NewInstance();

    // リストボックスの設定
    // …

    // スクロールバーの生成
    bar = CustomScrollBarControl::NewInstance();

    // 独自のスクロールバーをリストボックスに設定する
    list->SetScrollBarControl(bar);
    return;
}

参照

SFYScrollBarControl SFZListBoxControl::GetScrollBarControl


SFZListBoxControl::SetScrollBarWidth
スクロールバーの横幅を設定します。
[ public ]
Void SetScrollBarWidth(
    SInt16 param   // スクロールバーの横幅
);

解説

この関数は、スクロールバーコントロールの横幅を設定します。

デフォルト値: SFZListBoxControl::DEFAULT_BAR_WIDTH

SFZListBoxControl::DEFAULT_BAR_WIDTH の値は SFZListBoxControl::DefaultEnum を参照してください。

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

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

参照

SFZListBoxControl::GetScrollBarWidth | SFZListBoxControl::DefaultEnum


SFZListBoxControl::SetScrollDirection
スクロールの移動方向を設定します。
[ public ]
Void SetScrollDirection(
    DirectionEnum param   // 設定する値
);

解説

この関数は、スクロール移動方向を設定します。

デフォルト値: SFZListBoxControl::DEFAULT_DIRECTION

SFZListBoxControl::DEFAULT_DIRECTION の値は SFZListBoxControl::DirectionEnum を参照してください。

参照

SFZListBoxControl::GetScrollDirection | SFZListBoxControl::DirectionEnum


SFZListBoxControl::SetScrollInterval
スクロールインターバルを設定します。[単位:ミリ秒]
[ public ]
Void SetScrollInterval(
    UInt32 param   // 設定する値
);

解説

この関数は、スクロールインターバルを設定します。[単位:ミリ秒]

デフォルト値: SFZListBoxControl::DEFAULT_SCROLL

SFZListBoxControl::DEFAULT_SCROLL の値は SFZListBoxControl::DefaultEnum を参照してください。

参照

SFZListBoxControl::GetScrollInterval | SFZListBoxControl::DefaultEnum


SFZListBoxControl::SetScrollRepeat
連続スクロールフラグを設定します。
[ public ]
Void SetScrollRepeat(
    Bool param   // 連続スクロールフラグ
);

解説

この関数は、連続スクロールフラグを設定します。

[Note] 注意

連続スクロールフラグが true に設定されていると、 最上部または最下部の項目が選択されているときに、それぞれ UP キーまたは DOWM キーを押下すると、 最下部または最上部の項目が選択項目となります。

連続スクロールフラグが false の場合は、 最上部または最下部の項目が選択されているときに、それぞれ UP キーまたは DOWM キーを押下しても選択項目に変化はありません。

参照

SFZListBoxControl::GetScrollRepeat


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

解説

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

デフォルト値: SFZListBoxControl::DEFAULT_STEP

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

参照

SFZListBoxControl::GetScrollStep | SFZListBoxControl::DefaultEnum


SFZListBoxControl::SetSelBackColor
選択項目の背景色を設定します。
[ public ]
Void SetSelBackColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、選択項目の背景色を設定します。

デフォルト値: SFXRGBColor(0x11, 0x22, 0xBB, 0x00)[青色]

[Note] 選択項目の前景色

SFZListBoxControl::SetSelForeColor 関数の解説を参照してください。

[Note] 非選択項目の背景色

SFZListBoxControl::SetItemBackColor 関数の解説を参照してください。

[Note] 非選択項目の前景色

SFZListBoxControl::SetItemForeColor 関数の解説を参照してください。

参照

SFZListBoxControl::GetSelBackColor | SFZListBoxControl::GetSelForeColor | SFZListBoxControl::SetSelForeColor | SFZListBoxControl::SetItemBackColor | SFZListBoxControl::SetItemForeColor | SFXRGBColor


SFZListBoxControl::SetSelForeColor
選択項目の前景色を設定します。
[ public ]
Void SetSelForeColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、選択項目の前景色(テキストを描画する色)を設定します。

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

SFZListBoxControl::SetItemEnable 関数を使用して項目の有効フラグが false に設定されているとき、 またはリストボックスコントロールの状態が非活性化状態にあるときは、 この関数によって設定される色で項目のテキストは描画されません。

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

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

[Note] 選択項目の背景色

SFZListBoxControl::SetSelBackColor 関数の解説を参照してください。

[Note] 非選択項目の前景色

SFZListBoxControl::SetItemForeColor 関数の解説を参照してください。

[Note] 非選択項目の背景色

SFZListBoxControl::SetItemBackColor 関数の解説を参照してください。

参照

SFZListBoxControl::GetSelForeColor | SFZListBoxControl::SetSelBackColor | SFZListBoxControl::SetItemForeColor | SFZListBoxControl::SetItemBackColor | SFZListBoxControl::SetItemEnable | SFXRGBColor::GetBrightness | SFXRGBColor


SFZListBoxControl::SetUpKey
UP キーを設定します。
[ public ]
Void SetUpKey(
    AVKType param   // 設定するキー
);

解説

この関数は、 リストボックスコントロールの UP キーを設定します。

デフォルト値: AVK_UP

[Note] 注意

UP キーが押下された場合、 現在の選択項目よりも1つ上の項目がフレックスリストの新しい選択項目になります。

新しい選択項目が実領域内に完全に表示されていない場合は、 実領域の上端の位置に来るようにスクロールします。

連続スクロールフラグの値が true、かつ、 現在の選択項目が先頭の項目であるときに UP キーを押下すると、 末尾の項目が新しい選択項目となり、実領域の上端の位置に来るようにスクロールします。 このとき、先頭の項目は上から 2 行目の位置に表示されます(末尾の項目は最上行に表示されます)。

[Note] 値イベント

選択項目が変化した場合、 リストボックスコントロールは値イベント [SFXEvent(SFEVT_RESPONDER_VALUE, SFP16_VALUE_CURRENT, 選択された項目のインデックス)] を受信します。

参照

SFZListBoxControl::GetUpKey | SFZListBoxControl::GetDownKey | SFZListBoxControl::SetDownKey | SFZListBoxControl::SetScrollRepeat SFXEvent | 値イベント [SFEVT_RESPONDER_VALUE] | AVKType


SFZListBoxControl::SetWaitInterval
スクロール開始までの待ち時間を設定します。[単位:ミリ秒]
[ public ]
Void SetWaitInterval(
    UInt32 param   // 設定する待ちインターバル
);

解説

この関数は、スクロールが開始されるまでの待ちインターバルを設定します。[単位: ミリ秒]

デフォルト値: SFZListBoxControl::DEFAULT_WAIT

SFZListBoxControl::DEFAULT_WAIT の値は SFZListBoxControl::DefaultEnum を参照してください。

参照

SFZListBoxControl::GetWaitInterval | SFZListBoxControl::DefaultEnum


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

参照

SFYResponder::GetType | SFYResponder::SetType


SFZListBoxControl::DefaultEnum
各種パラメータのデフォルト値を表します。
enum DefaultEnum {
    DEFAULT_WAIT        = 1000,    // スクロール開始までの待ち時間(単位:ミリ秒)
    DEFAULT_SCROLL      = 100,     // スクロールインターバル(単位:ミリ秒)
    DEFAULT_STEP        = -1,      // スクロール移動量(単位:ピクセル)[ −1 の場合は使用しているフォントの半角空白文字(" ")一文字分の横幅になる]
    DEFAULT_BAR_WIDTH   = 5        // スクロールバーの幅(単位:ピクセル)
};
SFMTYPEDEFTYPE(DefaultEnum)

SFZListBoxControl::DirectionEnum
スクロールの移動方向を表します。
enum DirectionEnum {
    DIRECTION_LEFT    = 0,                // 左へスクロール
    DIRECTION_RIGHT,                      // 右へスクロール
    DEFAULT_DIRECTION = DIRECTION_LEFT    // デフォルト値: 左へスクロール
};
SFMTYPEDEFTYPE(DirectionEnum)