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

継承図

SFZComboBoxControl クラスの継承図

協調図

SFZComboBoxControl クラスの協調図

解説

■ 仕様と使い方

コンボボックスコントロール(SFZComboBoxControl)は、 項目リストを表示するためのフレックスリストボックスコントロール(SFZFlexListBoxControl)を内部に保持するボタンコントロールです。

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

フレックスリストボックスコントロール(SFZFlexListBoxControl)の部分は、 SFYButtonControl::SetOperateKey 関数で設定するコンボボックスコントロール(SFZComboBoxControl)の操作キーを押下後に離すと表示されます。

コンボボックスコントロールの領域には、 このフレックスリストボックスコントロール内で現在選択されている項目が表示されます。

フレックスリストボックスコントロールでは、 フォーカスされた項目はハイライト表示されます。 SFZFlexListBoxControl::SetScrollUpKey / SFZFlexListBoxControl::SetScrollDownKey / SFZFlexListBoxControl::SetPageUpKey / SFZFlexListBoxControl::SetPageDownKey / SFZFlexListBoxControl::SetSnapUpKey / SFZFlexListBoxControl::SetSnapDownKey 関数で設定するスクロールキーを使用して項目リストをスクロールします。

  1. フレックスリストボックスコントロールが開いている状態で リスト内のある項目を選択して操作キーまたはアクセスキーを押下すると、 フレックスリストボックスコントロールが閉じます。 そして、選択した項目がコンボボックスコントロールに表示されます。 [前提条件: 選択項目が SFZFlexListBoxControl::SetItemEnable 関数により有効化("true" が設定)されている必要があります。]

    このとき、コンボボックスコントロールは 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, 選択した項目のインデックス)] を受信します。

    [Tip] Tip
    フレックスリストボックスコントロールの操作キーは、SFYBoxControl::SetOperateKey 関数を使用して設定します。 デフォルトでは、セレクトキーがフレックスリストボックスコントロールの操作キーとして割り当てられています。
    [Tip] Tip
    アクセスキーは、SFZFlexListBoxControl::SetItemAccessKey 関数を使用して設定します。
    [Caution] 注意
    選択項目が SFZFlexListBoxControl::SetItemEnable 関数により無効化("false" が設定)されているとき、 操作キーまたはアクセスキーを押しても何も起こりません。
  2. フレックスリストボックスコントロールが開いている状態で ESCAPE キーを押下すると、フレックスリストボックスコントロールが閉じます。 コンボボックスコントロールの内容はフレックスリストボックスコントロールが開く以前と同じです。

    [Tip] Tip
    ESCAPE キーは、フレックスリストボックスコントロールの SFZFlexListBoxControl::SetEscapeKey 関数を使用して設定します。 デフォルトでは、クリアキーが ESCAPE キーとして割り当てられています。
    [Caution] 注意
    この場合、コンボボックスコントロールで結果イベントは発生しません。

参照: 結果イベント[SFEVT_RESPONDER_RESULT]

以下はコンボボックスコントロールの仕様です。

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

詳細は、SFZFlexListBoxControl クラスの解説を参照してください。

[Caution] コンボボックスコントロールの仕様上の制限

最小値は常に 0 です。

現在値は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)で選択されている項目のインデックスを表します。

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

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

□コンボボックスコントロールの構成

  1. タイトル・ベベル領域[左側]: コンテンツ領域にタイトルが表示される
  2. プルダウン・ベベル領域[右側]: コンテンツ領域に矢印(下三角形)が表示される
  3. 影領域

デフォルトの実装では、 コンボボックスコントロールは状態に応じて以下のように描画されます。

図 345. コンボボックスコントロールの拡大図[活性状態または操作可能状態]


コンボボックスコントロールの拡大図[活性状態または操作可能状態、非押下時]

タイトルはタイトル表示ベベル領域の幅2ピクセル分の枠(フォーカス・フレーム)で囲まれるコンテンツ領域に描画されます。

詳細情報: SFYButtonControl::DrawButton | SFYButtonControl::DrawShadow

図 346. コンボボックスコントロールの拡大図[非活性状態]


コンボボックスコントロールの拡大図[非活性状態]

タイトルは SFZComboBoxControl::SetTitleColor 関数で設定した色を非活性状態に合わせて補正した色で描画されます。

矢印(下三角形)は SFZComboBoxControl::SetArrowColor 関数で設定した色を非活性状態に合わせて補正した色で描画されます。

詳細情報: SFYButtonControl::DrawButton | SFYButtonControl::DrawShadow

図 347. コンボボックスコントロールの拡大図[フォーカス状態・非押下時]

図 348. コンボボックスコントロールの拡大図[フォーカス状態・押下時]

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

// ボディ文字列だけの実装
Void UserClass::Main(Void)
{
    SFZWindowSmp            window;
    SFZComboBoxControlSmp   combo;
    SFCError                error(SFERR_NO_ERROR);

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

    // [必須] コンボボックスを生成する
    combo = SFZComboBoxControl::NewInstance(&error);

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

    // [必須] 文字列を挿入する
    for (SInt32 i = 0;  i < 5 ; ++i) {
        combo->InsertLast(SFXAnsiString::Format("Item index is %d.", i));
    }

    // [必須] 実領域を設定する (ウィンドウのローカル領域から最適な領域を計算する)
    combo->SetRealBound(combo->GetSuitableBound(window->GetLocalBound().Deflate(20, 50)).SetOrigin(20, 50));

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

// ヘッダ文字列とボディアイコン画像を含んだ実装
Void UserClass::Main2(Void) {
    SFZWindowSmp                    window;
    SFZComboBoxControlSmp           combo;
    SFZComboBoxControl::ItemRec     item;
    SFBShellSmp                     shell(SFBShell::GetInstance());
    SFBImageSmp                     normal(shell->LoadResImage("userclass.bar", IDI_OBJECT_5001));
    SFBImageSmp                     select(shell->LoadResImage("userclass.bar", IDI_OBJECT_5002));
    SFCError                        error(SFERR_NO_ERROR);

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

    // [必須] コンボボックスを生成する
    combo = SFZComboBoxControl::NewInstance(&error);

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

    // ここではアイテム構造体を利用して項目を追加する。
    // 文字列だけでも追加できるが画像を利用する場合は、
    // アイテム構造体を利用した方が簡単。[選択]

    // [選択必須] アイテム構造体に有効状態を設定する
    item.property.enable = true;

    // [選択必須] アイテム構造体にアクセスキーとコマンド ID を設定する
    //            (今回は使用しない)
    item.property.key = 0;
    item.property.id = SFZComboBoxControl::INVALID_COMMAND_ID;

    // [任意] アイテム構造体に画像を設定する
    item.normal.body.icon = normal;
    item.select.body.icon = select;

    // [必須] 5 個の項目を追加する
    for (SInt32 i = 0;  i < 5; ++i) {

        // [選択必須] アイテム構造体に文字列を設定する
        item.normal.header.text.Set(SFXWideString::Format("%02d", i));
        item.normal.body.text.Set(SFXWideString::Format("List item %02d", i));
        item.select.body.text.Set(SFXWideString::Format("The item %02d is selected.", i));

        // 末尾に挿入
        combo->InsertLast(item);
    }

    // [必須] 実領域を設定する (ウィンドウのローカル領域から最適な領域を計算する)
    combo->SetRealBound(combo->GetSuitableBound(window->GetLocalBound().Deflate(20, 50)).SetOrigin(20, 50));

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

実行結果: (左: ボディ文字列のみ、右: ヘッダ文字列、ボディアイコン画像、ボディ文字列を含む)

[Caution] 注意

コンボボックスコントロールに内部的に保持されるフレックスリストボックスコントロールの領域は、 追加された項目とコンボボックスコントロールが配置される親レスポンダのローカル領域によって自動的に設定されます。

フレックスリストボックスコントロールを描画するには、 SFYResponder::SetRealBound 関数を使用して親レスポンダの実領域(ローカル領域)の設定が必須になります。

親レスポンダの実領域は、 SFYResponder::SetVirtualBound 関数で仮想領域を設定しない限りローカル領域と同じです。

※ ローカル領域と仮想領域は同じ矩形領域を表します。

参照

コンボボックスコントロール[SFZComboBoxControl] | SFZFlexListBoxControl | 状態 | SFYButtonControl | SFYSingleTextWidget | SFYResponder::SetRealBound | SFYResponder::SetVirtualBound | 実領域 | ローカル領域 | 仮想領域

メンバ

コンストラクタ/デストラクタ
SFZComboBoxControl( Void )
SFZComboBoxControl クラスのコンストラクタです。
~SFZComboBoxControl( Void )
SFZComboBoxControl クラスのデストラクタです。
パブリック関数
SFCError Append( SFXPathConstRef path , UInt16 id )
[非推奨 (廃止予定 API)]コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに項目を追加します。
SFCError Append( SFXPathConstRef path , UInt16 id , AVKType key , WChar keyIcon = 0 )
[非推奨 (廃止予定 API)]コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに項目を追加します。
SFCError Append( SFXWideStringConstRef item )
[非推奨 (廃止予定 API)]コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに項目を追加します。
SFCError Append( SFXWideStringConstRef item , AVKType key , WChar keyIcon = 0 )
[非推奨 (廃止予定 API)]コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに項目を追加します。
Void Clear( Void )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールのすべての項目を削除します。
SFXRGBColorConstRef GetArrowColor( Void )
矢印の色を取得します。
AEEFont GetFont( TextEnum textEnum )
フォントを取得します。
AEEFont GetFont( Void )
フォントを取得します。
HorizontalEnum GetHorizontalAlign( Void )
タイトルの水平アライメントの値を取得します。
AVKType GetItemAccessKey( SInt32 index )
コンボボックスコントロールが内部で保持するフレックスリストボックスの指定された項目のダイレクトアクセスキーを取得します。
SInt32 GetItemCount( Void )
項目数を取得します。
SFBImageSmpConstRef GetItemIconImage( SInt32 index , IconEnum iconEnum )
指定された項目のアイコン定数に対応するアイコン画像を取得します。
SFXWideStringConstRef GetItemText( SInt32 index , TextEnum textEnum )
指定された項目の文字列定数に対応する文字列を取得します。
SFXWideStringConstRef GetItemText( SInt32 index )
指定された項目の文字列定数に対応する文字列を取得します。
SFZFlexListBoxControlSmpConstRef GetListBoxControl( Void )
フレックスリストボックスコントロールを取得します。
SInt32 GetMaximumValue( Void )
[非推奨 (廃止予定 API)]コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の項目数を取得します。
DirectionEnum GetScrollDirection( Void )
タイトルのスクロール移動方向を取得します。
UInt32 GetScrollInterval( Void )
タイトルのスクロールインターバルを取得します。[単位:ミリ秒]
SInt16 GetScrollStep( Void )
タイトルのスクロール移動量を取得します。[単位:ピクセル]
SInt16 GetSpaceSize( Void )
タイトルの要素間スペースサイズを取得します。[単位:ピクセル]
SFXRGBColorConstRef GetTitleColor( TextEnum textEnum )
タイトルの文字色を取得します。
SFXRGBColorConstRef GetTitleColor( Void )
タイトルの文字色を取得します。
VerticalEnum GetVerticalAlign( Void )
タイトルの垂直アライメントの値を取得します。
UInt32 GetWaitInterval( Void )
タイトルのスクロール開始までの待ち時間を取得します。[単位:ミリ秒]
SFCError Insert( SInt32 index , ItemRecConstRef item )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに指定された項目を挿入します。
SFCError Insert( SInt32 index , ItemRecConstPtr item , SInt32 length )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに指定された項目を挿入します。
SFCError Insert( SInt32 index , SFXWideStringConstRef text )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに指定された項目を挿入します。
SFCError Insert( SInt32 index , SFXWideStringConstPtr text , SInt32 length )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに指定された項目を挿入します。
SFCError InsertFirst( ItemRecConstRef item )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの先頭に指定された項目を挿入します。
SFCError InsertFirst( ItemRecConstPtr item , SInt32 length )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの先頭に指定された項目を挿入します。
SFCError InsertFirst( SFXWideStringConstRef text )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの先頭に指定された項目を挿入します。
SFCError InsertFirst( SFXWideStringConstPtr text , SInt32 length )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの先頭に指定された項目を挿入します。
SFCError InsertLast( ItemRecConstRef item )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの末尾に指定された項目を挿入します。
SFCError InsertLast( ItemRecConstPtr item , SInt32 length )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの末尾に指定された項目を挿入します。
SFCError InsertLast( SFXWideStringConstRef text )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの末尾に指定された項目を挿入します。
SFCError InsertLast( SFXWideStringConstPtr text , SInt32 length )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの末尾に指定された項目を挿入します。
static
SFZComboBoxControlSmp
NewInstance( SFCErrorPtr exception = null )
新しいインスタンスを作成します。
Void Remove( SInt32 index )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の指定されたインデックスの位置または範囲の項目を削除します。
Void Remove( SInt32 begin , SInt32 end )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の指定されたインデックスの位置または範囲の項目を削除します。
Void RemoveFirst( Void )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の先頭の項目を削除します。
Void RemoveLast( Void )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の末尾の項目を削除します。
Void SetArrowColor( SFXRGBColorConstRef param )
矢印の色を設定します。
Void SetFont( TextEnum textEnum , AEEFont param )
タイトルのフォントを設定します。
Void SetFont( AEEFont param )
タイトルのフォントを設定します。
Void SetHorizontalAlign( HorizontalEnum param )
タイトルの水平アライメントを設定します。
SFCError SetItemAccessKey( SInt32 index , AVKType key , WChar keyIcon = 0 )
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールについて、 指定された項目にアクセスキーとその絵文字を設定します。
SFCError SetItemIconImage( SInt32 index , IconEnum iconEnum , SFXPathConstRef path )
指定された項目のアイコン定数に対応するアイコン画像を設定します。
SFCError SetItemIconImage( SInt32 index , IconEnum iconEnum , SFXPathConstRef path , UInt16 id )
指定された項目のアイコン定数に対応するアイコン画像を設定します。
SFCError SetItemIconImage( SInt32 index , IconEnum iconEnum , SFBImageSmpConstRef param )
指定された項目のアイコン定数に対応するアイコン画像を設定します。
SFCError SetItemText( SInt32 index , TextEnum textEnum , SFXPathConstRef path , UInt16 id )
指定された項目の文字列定数に対応する文字列を設定します。
SFCError SetItemText( SInt32 index , TextEnum textEnum , SFXWideStringConstRef param )
指定された項目の文字列定数に対応する文字列を設定します。
SFCError SetItemText( SInt32 index , SFXPathConstRef path , UInt16 id )
指定された項目の文字列定数に対応する文字列を設定します。
SFCError SetItemText( SInt32 index , SFXWideStringConstRef param )
指定された項目の文字列定数に対応する文字列を設定します。
Void SetScrollDirection( DirectionEnum param )
タイトルのスクロール移動方向を設定します。
Void SetScrollInterval( UInt32 param )
タイトルのスクロールインターバルを設定します。[単位:ミリ秒]
Void SetScrollStep( SInt16 param )
タイトルのスクロール移動量を設定します。[単位:ピクセル]
Void SetSpaceSize( SInt16 param )
タイトルの要素間スペースサイズを設定します。[単位:ピクセル]
Void SetTitleColor( TextEnum textEnum , SFXRGBColorConstRef param )
タイトルの色を設定します。
Void SetTitleColor( SFXRGBColorConstRef param )
タイトルの色を設定します。
Void SetVerticalAlign( VerticalEnum param )
タイトルの垂直アライメントを設定します。
Void SetWaitInterval( UInt32 param )
タイトルのスクロール開始までの待ち時間を設定します。[単位:ミリ秒]
Void StartScroll( Void )
タイトルのスクロールを開始します.
Void StopScroll( Void )
タイトルのスクロールを停止します.
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
SFXBevelColorConstRef GetButtonColor( Void ) (SFYButtonControl から継承)
ボタンコントロール内ベベル領域を描画するベベルカラーを取得します。
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 から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFXBevelColorConstRef GetFocusColor( Void ) (SFYButtonControl から継承)
フォーカス状態にあるときのボタンコントロール内ベベル領域の枠を描画するベベルカラーを取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
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 ) (SFYButtonControl から継承)
ボタンの操作キーを取得します。
SFYResponderSmp GetParent( Void ) (SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
Bool GetPropertyTransparent( Void ) (SFYResponder から継承)
このレスポンダの透過属性を取得します。
SFXRectangleConstRef GetRealBound( Void ) (SFYResponder から継承)
このレスポンダの実領域を取得します。
VoidPtr GetReference( Void ) (SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
SFYRendererPtr GetRenderer( Void ) (SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
SFYResponderSmp GetRoot( Void ) (SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
SFXRGBColorConstRef GetShadowColor( Void ) (SFYButtonControl から継承)
影の色を取得します。
Bool GetStateActive( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの活性状態を取得します。
Bool GetStateEnable( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの操作可能状態を取得します。
Bool GetStateFocus( Bool inherit = false ) (SFYResponder から継承)
このレスポンダのフォーカス状態を取得します。
Bool GetStatePress( Void ) (SFYButtonControl から継承)
ボタンコントロールの押下状態を取得します。
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 SetButtonColor( SFXBevelColorConstRef param ) (SFYButtonControl から継承)
ボタンコントロール内ベベル領域を描画するベベルカラーを設定します。
Void SetCurrentValue( SInt32 param ) (SFYControl から継承)
コントロールの現在値を設定します。
Void SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
Void SetFocusColor( SFXBevelColorConstRef param ) (SFYButtonControl から継承)
フォーカス状態にあるときのボタンコントロール内ベベル領域の枠を描画するベベルカラーを設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
Void SetMaximumValue( SInt32 param ) (SFYControl から継承)
コントロールの最大値を設定します。
Void SetMinimumValue( SInt32 param ) (SFYControl から継承)
コントロールの最小値を設定します。
Void SetOperateKey( AVKType param ) (SFYButtonControl から継承)
操作キーを設定します。
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 SetShadowColor( SFXRGBColorConstRef param ) (SFYButtonControl から継承)
影の色を設定します。
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 SetStatePress( Bool param ) (SFYButtonControl から継承)
ボタンコントロールの押下状態を設定します。
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 DrawTab( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle )
コンボボックスの矢印を描画します。
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 HandleOperateKeyRelease( Void )
操作キーの SFEVT_KEY_RELEASE イベントを受信したときに呼び出される関数です。
Void HandleRenderRequest( SFXGraphicsPtr graphics )
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void DrawButton( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle ) (SFYButtonControl から継承)
ボタンコントロールのベベル領域を描画します。
SFXRectangle DrawShadow( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle ) (SFYButtonControl から継承)
ボタンコントロールの影領域を描画します。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
static
SFXMarginConstRef
GetButtonMargin( Void ) (SFYButtonControl から継承)
ボタンコントロールのマージンを取得します。
static
SFXGridConstRef
GetPressOffset( Void ) (SFYButtonControl から継承)
プレスオフセットを取得します。
static
SFXMarginConstRef
GetShadowMargin( Void ) (SFYButtonControl から継承)
ボタンコントロールの影領域のマージンを取得します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleBoundReal( Void ) (SFYControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleOperateKey( Void ) (SFYButtonControl から継承)
キーイベントを処理します。
Void HandleOperateKeyPress( Void ) (SFYButtonControl から継承)
操作キーの SFEVT_KEY_PRESS イベントを受信したときに呼び出される関数です。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFZComboBoxControl クラスを表す定数です。
DefaultEnum
各種パラメータのデフォルト値を表します。
DirectionEnum
タイトルのスクロール移動方向を表します。
HorizontalEnum
タイトルの水平方向のアライメントを表す定数です。
IconEnum
タイトルまたはリスト項目内の操作対象アイコン画像を指定する定数です。
ItemRec
項目の各種属性を表す構造体です。 (アイテム構造体)
TextEnum
タイトルまたはリスト項目内の操作対象文字列を指定する定数です。
VerticalEnum
タイトルの垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを "ccmb" に設定します。
  2. 矢印の色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  3. タイトルの要素間スペースサイズ を2ピクセルに設定します。
  4. タイトルの色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  5. タイトルのフォントを AEE_FONT_NORMAL に設定します。
  6. タイトルの水平アライメントを SFZComboBoxControl::DEFAULT_HORIZONTAL に設定します。
  7. タイトルの垂直アライメントを SFZComboBoxControl::DEFAULT_VERTICAL に設定します。
  8. タイトルのスクロール開始までの待ち時間を SFZComboBoxControl::DEFAULT_WAIT に設定します。
  9. タイトルのスクロール移動方向を SFZComboBoxControl::DEFAULT_DIRECTION に設定します。
  10. タイトルのスクロールインターバルを SFZComboBoxControl::DEFAULT_SCROLL に設定します。
  11. タイトルのスクロール移動量を SFZComboBoxControl::DEFAULT_STEP に設定します。
  12. 項目リスト用に内部で子レスポンダとして保持する SFZFlexListBoxControl インスタンスを生成します。
  13. 下表にあるハンドラをコンボボックスコントロールと内部に保持するフレックスリストボックスコントロールに登録します。

表 255. コンボボックスコントロールに登録するハンドラ

イベント ハンドラの内容
このコンボボックスコントロールがフォーカス状態になった時に発生する状態イベント[SFEVT_RESPONDER_STATE] タイトルのスクロールを開始します。
このコンボボックスコントロールが非フォーカス状態になった時に発生する状態イベント[SFEVT_RESPONDER_STATE] タイトルのスクロールを停止します。
SFYButtonControl::GetStatePress 関数によってボタンの押下状態が設定された時に発生する状態イベント[SFEVT_RESPONDER_STATE] 押下状態の時は影領域を左上に、そうでない場合は影領域を右下に配置します。
このコンボボックスコントロールの現在値が変更された時に発生する値イベント[SFEVT_RESPONDER_STATE] フレックスリストボックスコントロールで現在選択されている項目をコンボボックスコントロールのタイトルに設定します。
[Note] 注意
SFZComboBoxControl クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。

表 256. コンボボックスコントロールが内部に保持するフレックスリストボックスコントロールに登録するハンドラ

イベント ハンドラの内容
結果イベント[SFEVT_RESPONDER_RESULT] フレックスリストボックスコントロールの親レスポンダを"SFYResponderSmp::EmptyInstance()"とし、その状態を"不可視状態"に設定します。 フレックスリストボックスコントロールの現在値をコンボボックスコントロールの現在値とします。 コンボボックスコントロールの状態を"フォーカス状態"にします。 そして、結果イベント SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false) を送信します。

内部実装

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

/*protected */SFZComboBoxControl::SFZComboBoxControl(Void) static_throws
{
    static SFXRGBColor::AtomRecConst            rgb[] = {
        {{{0x00, 0x00, 0x00, 0x00}}}
    };
    static SFXEventRange::AtomRecConst          range[] = {
        { SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,    SFP16_STATE_FOCUS,    SFP16_STATE_FOCUS},
        { SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,    SFP16_STATE_PRESS,    SFP16_STATE_PRESS},
        { SFEVT_RESPONDER_VALUE,  SFEVT_RESPONDER_VALUE,  SFP16_VALUE_CURRENT,  SFP16_VALUE_CURRENT}
    };
    static SFXEventRange::AtomRecConst          wrange[] = {
        { SFEVT_RESPONDER_STYLE,  SFEVT_RESPONDER_STYLE,          SFP16_BEGIN,            SFP16_END}
    };
    SFYHandler::RuleRec                         rule[lengthof(range)];
    SFYHandler::RuleRec                         wrule[lengthof(wrange)];
    SFYHandler::RuleRec                         lrule[lengthof(lrange)];
    SFCError                                    error;

    if (static_try()) {
        SetType(CODE_TYPE);
        rule[0].spp = XANDLER_FUNCTION(OnStateFocus);
        rule[0].reference = this;
        rule[1].spp = XANDLER_FUNCTION(OnStatePress);
        rule[1].reference = this;
        rule[2].spp = XANDLER_FUNCTION(OnCurrentValue);
        rule[2].reference = this;
        static_throw(RegisterHandler(atomic_cast(range), rule, lengthof(range)));
        if (static_try()) {
            if ((_widget = SFYFlexListItemWidget::NewInstance(&error)) != null) {
                wrule[0].spp = XANDLER_FUNCTION(OnWidgetStyle);
                wrule[0].reference = this;
                static_throw(_widget->RegisterHandler(atomic_cast(wrange), wrule, lengthof(wrange)));
                if (static_try()) {
                    static_throw(_widget->SetParent(GetThis()));
                    if (static_try()) {
                        _widget->SetHorizontalAlign(SFYFlexListItemWidget::NORMAL, static_cast<SFYFlexListItemWidget::HorizontalEnum>(DEFAULT_HORIZONTAL));
                        _widget->SetState(true, true, false, false);
                        if ((_listbox = SFZFlexListBoxControl::NewInstance(&error)) != null) {
                            lrule[0].spp = XANDLER_FUNCTION(OnListBoxResult);
                            lrule[0].reference = this;
                            static_throw(_listbox->RegisterHandler(atomic_cast(lrange), lrule, lengthof(lrange)));
                            if (static_try()) {
                                _color.arrow = rgb[0];
                            }
                        }
                        else {
                            static_throw(error);
                        }

                    }
                }
            }
            else {
                static_throw(error);
            }
        }
    }
}// SFZComboBoxControl::SFZComboBoxControl //

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

/*private */XANDLER_IMPLEMENT_VOIDSTATE(SFZComboBoxControl, OnStatePress, invoker, reason, state)
{
    SFXRectangle                                lx;

    unused(invoker); unused(reason);
    lx.Set(_widget->GetRealBound());
    (state) ? (lx.Offset(GetPressOffset())) : (lx.Unoffset(GetPressOffset()));
    _widget->SetRealBound(lx);
    return;
}// XANDLER_IMPLEMENT_VOIDSTATE(SFZTextButtonControl, OnStatePress) //

/*private */XANDLER_IMPLEMENT_VOIDVALUE(SFZComboBoxControl, 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 {
        CopyItemToWidget(_listbox->GetItem(value), _widget);
    }
    return;
}// XANDLER_IMPLEMENT_VOIDVALUE(SFZComboBoxControl, OnCurrentValue) //

/*private */XANDLER_IMPLEMENT_VOIDSTYLE(SFZComboBoxControl, OnWidgetStyle, invoker, reason)
{
    unused(invoker);
    InvokeBackward(SFXEvent(SFEVT_RESPONDER_STYLE, reason, 0), true);
    return;
}// XANDLER_IMPLEMENT_VOIDSTYLE(SFZComboBoxControl, OnWidgetStyle) //

/*private */XANDLER_IMPLEMENT_VOIDRESULT(SFZComboBoxControl, OnListBoxResult, invoker, reason, result)
{
    unused(invoker); unused(result);
    _listbox->SetParent(SFYResponderSmp::EmptyInstance());
    _listbox->SetStateVisible(false);
    SetStateFocus(true);
    if (reason == SFP16_RESULT_OK) {
        SetCurrentValue(_listbox->GetCurrentValue());
        InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false);
    }
    return;
}// XANDLER_IMPLEMENT_VOIDEVENT(SFZComboBoxControl, OnListBoxResult) //

/*private */SFCError SFZComboBoxControl::CopyItemToWidget(SFZFlexListBoxControl::ItemRecConstRef item, SFYFlexListItemWidgetSmpConstRef widget)
{
    SFCError                                    error(SFERR_NO_ERROR);

    if ((error = widget->SetText(SFYFlexListItemWidget::TEXT_HEADER_NORMAL, item.normal.header.text)) == SFERR_NO_ERROR) {
        if ((error = widget->SetText(SFYFlexListItemWidget::TEXT_BODY_NORMAL, item.normal.body.text)) == SFERR_NO_ERROR) {
            if ((error = widget->SetIconImage(SFYFlexListItemWidget::ICON_BODY_NORMAL, item.normal.body.icon)) == SFERR_NO_ERROR) {
                if ((error = widget->SetIconImage(SFYFlexListItemWidget::ICON_FOOTER_NORMAL, item.normal.footer.icon)) == SFERR_NO_ERROR) {
                    if ((error = widget->SetText(SFYFlexListItemWidget::TEXT_HEADER_SELECT, item.select.header.text)) == SFERR_NO_ERROR) {
                        if ((error = widget->SetText(SFYFlexListItemWidget::TEXT_BODY_SELECT, item.select.body.text)) == SFERR_NO_ERROR) {
                            if ((error = widget->SetIconImage(SFYFlexListItemWidget::ICON_BODY_SELECT, item.select.body.icon)) == SFERR_NO_ERROR) {
                                error = widget->SetIconImage(SFYFlexListItemWidget::ICON_FOOTER_SELECT, item.select.footer.icon);
                            }
                        }
                    }
                }
            }
        }
    }
    return error;
}// SFZComboBoxControl::CopyItemToWidget //

参照

SFYResponder::SetType | SFZComboBoxControl::CodeEnum | SFZComboBoxControl::SetArrowColor | SFZComboBoxControl::SetFont | SFZComboBoxControl::SetTitleColor | SFZComboBoxControl::SetSpaceSize | SFZComboBoxControl::SetHorizontalAlign | SFZComboBoxControl::SetVerticalAlign | SFZComboBoxControl::SetScrollDirection | SFZComboBoxControl::SetScrollInterval | SFZComboBoxControl::SetScrollStep | SFZComboBoxControl::SetWaitInterval | SFZComboBoxControl::HorizontalEnum | SFZComboBoxControl::VerticalEnum | SFZComboBoxControl::DirectionEnum | SFZComboBoxControl::DefaultEnum | SFYButtonControl::SetStatePress | SFYControl::SetCurrentValue | SFZFlexListBoxControl::NewInstance | SFXRGBColor | SFXEvent | タイプ | 状態 | イベント | 状態イベント[SFEVT_RESPONDER_STATE] | 結果イベント[SFEVT_RESPONDER_RESULT] | 値イベント[SFEVT_RESPONDER_VALUE]


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

解説

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

内部実装

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

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

SFZComboBoxControl::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 item   // 文字列項目
);
[ public ]
SFCError Append(
    SFXWideStringConstRef item   // 文字列項目
    AVKType key                  // ダイレクトアクセスキー
    WChar keyIcon = 0            // キーアイコン
);

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)の末尾に項目を追加します。

[Caution] 非推奨 (廃止予定 API)

この関数はまもなく廃止されます。 この関数の代わりに、SFZComboBoxControl::InsertLast 関数を使用してください。

参照

SFZComboBoxControl::InsertLast | SFZComboBoxControl::Remove | SFZComboBoxControl::Clear | SFZFlexListBoxControl


SFZComboBoxControl::Clear
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールのすべての項目を削除します。
[ public ]
Void Clear(Void);

解説

この関数は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)のすべての項目を削除します。

参照

SFZComboBoxControl::InsertLast | SFZComboBoxControl::Insert | SFZComboBoxControl::InsertFirst | SFZComboBoxControl::Append | SFZComboBoxControl::Remove | SFZFlexListBoxControl


SFZComboBoxControl::DrawTab
コンボボックスの矢印を描画します。
[ protected, const ]
Void DrawTab(
    SFXGraphicsPtr graphics          // グラフィックスオブジェクト
    SFXRectangleConstRef rectangle   // コンボボックスの矢印を描画する矩形領域
);

解説

この関数は、 指定された矩形領域にコンボボックスの矢印を描画します。

独自の処理を行う場合は、この関数をオーバーライドします。

[Tip] Tip
この関数は、SFZComboBoxControl::HandleRenderRequest 関数内で呼び出されます。

内部実装

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

/*protected */Void SFZComboBoxControl::DrawTab(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle) const
{
    SInt16                                      W(rectangle.GetWidth());
    SInt16                                      H(rectangle.GetHeight());
    SInt16                                      h(H / 4 - 1);
    SInt16                                      w(h * 2);
    SInt16                                      x(rectangle.GetX() + (W - w) / 2);
    SInt16                                      y(rectangle.GetY() + (H - h) / 2);
    SFXRGBColor                                 rgb(GetArrowColor());
    SFXTriangle                                 triangle;

    triangle.Set(x, y, x + w, y, x + w / 2, y + h);
    if (!GetStateActive(true)) {
        (rgb.GetBrightness() > 0x7F) ? rgb.SubRGB(0x44) : rgb.AddRGB(0x44);
    }
    graphics->FillTriangle(triangle, rgb);
    return;
}// SFZComboBoxControl::DrawTab //

参照

SFZComboBoxControl::HandleRenderRequest


SFZComboBoxControl::GetArrowColor
矢印の色を取得します。
[ public, const ]
SFXRGBColorConstRef GetArrowColor(Void);

戻り値

ボタンの矢印を描画する色。

解説

この関数は、矢印の色を取得します。

参照

SFZComboBoxControl::SetArrowColor | SFXRGBColor


SFZComboBoxControl::GetFont
フォントを取得します。
[ public, const ]
AEEFont GetFont(
    TextEnum textEnum   // 文字列定数
);
[ public, const ]
AEEFont GetFont(Void);

戻り値

フォント。

解説

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

指定した文字列定数(SFZComboBoxControl::TextEnum)に対応するフォントが返されます。

文字列定数を指定しない場合はボディのフォントが返されます。

参照

SFZComboBoxControl::TextEnum | SFZComboBoxControl::SetFont | BREW API AEEFont


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

戻り値

タイトルの水平アライメントの値。

解説

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

参照

SFZComboBoxControl::SetHorizontalAlign | SFZComboBoxControl::HorizontalEnum


SFZComboBoxControl::GetItemAccessKey
コンボボックスコントロールが内部で保持するフレックスリストボックスの指定された項目のダイレクトアクセスキーを取得します。
[ public, const ]
AVKType GetItemAccessKey(
    SInt32 index   // リスト項目のインデックス
);

戻り値

コンボボックスコントロールが内部で保持するフレックスリストボックス(SFZFlexListBoxControl)について、 指定した項目に設定されたダイレクトアクセスキーが返ります。 ダイレクトアクセスキーが設定されていない場合は "0" が返ります。

参照

SFZComboBoxControl::SetItemAccessKey | SFZFlexListBoxControl | AVKType


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

戻り値

コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の項目数。

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の項目数を取得します。

参照

SFZFlexListBoxControl


SFZComboBoxControl::GetItemIconImage
指定された項目のアイコン定数に対応するアイコン画像を取得します。
[ public, const ]
SFBImageSmpConstRef GetItemIconImage(
    SInt32 index        // 項目のインデックス
    IconEnum iconEnum   // アイコン定数
);

戻り値

項目のアイコン定数 (SFZComboBoxControl::IconEnum) に対応するアイコン画像。

解説

この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目のアイコン定数 (SFZComboBoxControl::IconEnum) に対応するアイコン画像を取得します。

参照

SFZComboBoxControl::IconEnum | SFZComboBoxControl::SetItemIconImage | SFZFlexListBoxControl


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

戻り値

項目の文字列定数に対応する文字列。

文字列定数を指定しなかった場合は、ボディ文字列。

解説

この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目の文字列定数 (SFZComboBoxControl::TextEnum) に対応する文字列を取得します。

文字列定数を指定しなかった場合は、 ボディ文字列を取得します。

参照

SFZComboBoxControl::TextEnum | SFZComboBoxControl::SetItemText | SFZFlexListBoxControl


SFZComboBoxControl::GetListBoxControl
フレックスリストボックスコントロールを取得します。
[ public, const ]
SFZFlexListBoxControlSmpConstRef GetListBoxControl(Void);

戻り値

コンボボックスコントロールで利用されるフレックスリストボックスコントロール。

解説

この関数は、 コンボボックスコントロールが保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)を取得します。

開発者は取得したフレックスリストボックスコントロールを使用して、 項目の背景色や前景色を変更することができます。

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

詳細は、SFZFlexListBoxControl クラスの解説を参照してください。

使用例

以下は、フレックスリストボックスコントロールを取得してグリッド線を有効にしています。

SFZComboBoxControlSmp       combo;
SFZFlexListBoxControlSmp    list;

// コンボボックスのインスタンスを作成する
if ((combo = SFZComboBoxControl::NewInstance()) != null) {
    // ・・・
}

// フレックスリストボックスを取得する
if ((list = combo->GetListBoxControl()) != null) {

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

参照

SFZFlexListBoxControl


SFZComboBoxControl::GetMaximumValue
[非推奨 (廃止予定 API)]コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の項目数を取得します。
[ public, const ]
SInt32 GetMaximumValue(Void);

戻り値

コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の項目数。

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の項目数を取得します。

[Caution] 非推奨 (廃止予定 API)

この関数はまもなく廃止されます。 この関数の代わりに、SFZComboBoxControl::GetItemCount 関数を使用してください。

参照

SFZComboBoxControl::GetItemCount


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

戻り値

タイトルのスクロール移動方向。

解説

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

参照

SFZComboBoxControl::SetScrollDirection


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

戻り値

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

解説

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

参照

SFZComboBoxControl::SetScrollInterval


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

戻り値

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

解説

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

参照

SFZComboBoxControl::SetScrollStep


SFZComboBoxControl::GetSpaceSize
タイトルの要素間スペースサイズを取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetSpaceSize(Void);

戻り値

タイトルの要素間スペースサイズ。[単位:ピクセル]

解説

この関数は、タイトルの要素間スペースサイズを取得します。[単位:ピクセル]

参照

SFZComboBoxControl::SetSpaceSize


SFZComboBoxControl::GetTitleColor
タイトルの文字色を取得します。
[ public, const ]
SFXRGBColorConstRef GetTitleColor(
    TextEnum textEnum   // 文字列定数
);
[ public, const ]
SFXRGBColorConstRef GetTitleColor(Void);

戻り値

タイトルの文字色。

解説

この関数は、タイトルの文字色を取得します。

指定した文字列定数(SFZComboBoxControl::TextEnum)に対応するタイトルの文字色が返されます。

文字列定数を指定しない場合はボディの文字色が返されます。

参照

SFXRGBColor | SFZComboBoxControl::TextEnum | SFZComboBoxControl::SetTitleColor


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

戻り値

タイトルの垂直アライメントの値。

解説

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

参照

SFZComboBoxControl::SetVerticalAlign | SFZComboBoxControl::VerticalEnum


SFZComboBoxControl::GetWaitInterval
タイトルのスクロール開始までの待ち時間を取得します。[単位:ミリ秒]
[ public, const ]
UInt32 GetWaitInterval(Void);

戻り値

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

解説

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

参照

SFZComboBoxControl::SetWaitInterval


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

解説

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

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

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

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

現在値の項目を基準に最適なサイズを計算します。

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

内部実装

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

SFYFlexListItemWidgetSmp        _widget;

/*protected virtual */Void SFZComboBoxControl::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    SFXRectangle                                temp;

    temp.Set(*rectangle);
    rectangle->Deflate(GetShadowMargin());
    rectangle->Deflate(GetButtonMargin());
    rectangle->SetSize(_widget->GetSuitableBound(*rectangle).GetSize());
    rectangle->Inflate(GetButtonMargin());
    rectangle->Inflate(GetShadowMargin());
    rectangle->AddWidth(rectangle->GetHeight());
    if (rectangle->GetWidth() > temp.GetWidth()) {
        rectangle->SetWidth(temp.GetWidth());
    }
    return;
}// SFZComboBoxControl::HandleBoundOptimize //

参照

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


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

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

現在値の項目を基準に最適なサイズを計算します。

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

内部実装

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

SFYFlexListItemWidgetSmp        _widget;

/*protected virtual */Void SFZComboBoxControl::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    rectangle->Deflate(GetShadowMargin());
    rectangle->Deflate(GetButtonMargin());
    rectangle->SetSize(_widget->GetSuitableBound().GetSize());
    rectangle->Inflate(GetButtonMargin());
    rectangle->Inflate(GetShadowMargin());
    rectangle->AddWidth(rectangle->GetHeight());
    return;
}// SFZComboBoxControl::HandleBoundRequest //

参照

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


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

解説

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

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

デフォルトの実装は、 タイトル表示領域を内部で保持するウィジェット(SFYFlexListItemWidget) の実領域として設定します。

タイトルは、内部でウィジェット (SFYFlexListItemWidget) として保持されます。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントの送信

(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントは SFYResponder::SetRealBound または SFYResponder::SetVirtualBound 関数の呼び出しによって仮想領域が変化したときに発生します。

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

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

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

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

内部実装

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

/*protected virtual */Void SFZComboBoxControl::HandleBoundVirtual(Void)
{
    Relocate();
    if (_listbox->GetStateVisible()) {
        RelocateListBox();
    }
    return;
}// SFZComboBoxControl::HandleBoundVirtual //

/*private */Void SFZComboBoxControl::Relocate(Void)
{
    SFXRectangle                                lx;

    lx.Set(GetLocalBound());
    lx.SubRight(lx.GetHeight());
    lx.Deflate(GetShadowMargin());
    lx.Deflate(GetButtonMargin());
    if (GetStatePress()) {
        lx.Offset(GetPressOffset());
    }
    _widget->SetRealBound(lx);
    return;
}// SFZComboBoxControl::Relocate //

/*private */Void SFZComboBoxControl::RelocateListBox(Void)
{
    SFXRectangle                                rx;
    SFXRectangle                                px;
    SFXRectangle                                sx;
    SFYResponderSmp                             parent(GetParent());

    if (parent != null) {
        rx.Set(GetRealBound());
        px.Set(
            SFXRectangle(parent->GetVirtualBound()).GetLeftTop().Neg(),
            parent->GetRealBound().GetSize()
        );
        sx.Set(SFXRectangle(rx.GetX(), px.GetY(), rx.GetWidth(), px.GetHeight()));
        sx.Set(_listbox->GetSuitableBound(sx));
        sx.SetWidth(rx.GetWidth());
        if (sx.GetHeight() < px.GetHeight()) {
            sx.SetY(rx.GetBottom());
            if (sx.GetBottom() > px.GetBottom()) {
                sx.SubY(sx.GetBottom() - px.GetBottom());
            }
        }
        _listbox->SetRealBound(sx);
    }
    return;
}// SFZComboBoxControl::ReLocateListBox //

参照

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


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

解説

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

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

デフォルトの実装は、 コンボボックスコントロールが内部に保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)を表示します。

内部実装

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

SFZFlexListBoxControlSmp        _listbox;

/*protected virtual */Void SFZComboBoxControl::HandleOperateKeyRelease(Void)
{
    SetStateFocus(false);
    _listbox->SetParent(GetThis()->GetParent());
    _listbox->SetState(true, true, true, true);
    _listbox->SetCurrentValue(GetCurrentValue());
    RelocateListBox();
    _listbox->ToFront();
    return;
}// SFZComboBoxControl::HandleOperateKeyRelease

/*private */Void SFZComboBoxControl::RelocateListBox(Void)
{
    SFXRectangle                                rx;
    SFXRectangle                                px;
    SFXRectangle                                sx;
    SFYResponderSmp                             parent(GetParent());

    if (parent != null) {
        rx.Set(GetRealBound());
        px.Set(
            SFXRectangle(parent->GetVirtualBound()).GetLeftTop().Neg(),
            parent->GetRealBound().GetSize()
        );
        sx.Set(SFXRectangle(rx.GetX(), px.GetY(), rx.GetWidth(), px.GetHeight()));
        sx.Set(_listbox->GetSuitableBound(sx));
        sx.SetWidth(rx.GetWidth());
        if (sx.GetHeight() < px.GetHeight()) {
            sx.SetY(rx.GetBottom());
            if (sx.GetBottom() > px.GetBottom()) {
                sx.SubY(sx.GetBottom() - px.GetBottom());
            }
        }
        _listbox->SetRealBound(sx);
    }
    return;
}// SFZComboBoxControl::ReLocateListBox //

参照

SFYButtonControl::SetOperateKey | SFZFlexListBoxControl | キーイベント[SFEVT_KEY]


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

解説

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

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

デフォルトの実装では、 状態に応じて以下のようなコンボボックスコントロールを描画します。 ボタン部分の描画の詳細については、SFYButtonControl::DrawButton 関数と SFYButtonControl::DrawShadow 関数の説明を参照してください。

■コンボボックスコントロールの構成

  1. タイトル表示ベベル領域[左側] : コンテンツ領域にタイトルを表示するベベル領域
  2. 矢印(下三角形)表示ベベル領域[右側] : コンテンツ領域に矢印(下三角形)を表示するベベル領域
  3. 影領域

■コンボボックスコントロールの描画処理

  1. ボタンを描画します。
    1. SFYButtonControl::DrawButton 関数を呼び出してタイトル表示ベベル領域と矢印(下三角形)表示ベベル領域を描画します。
    2. SFYButtonControl::DrawShadow 関数を呼び出して影領域を描画します。
  2. タイトル表示ベベル領域の幅2ピクセル分の枠(フォーカス・フレーム)で囲まれるコンテンツ領域内にタイトルを描画します。
  3. 矢印(下三角形)表示ベベル領域の幅2ピクセル分の枠(フォーカス・フレーム)で囲まれるコンテンツ領域中央に矢印(下三角形)を描画します。
  4. タイトルは、 コンボボックスコントロールが保持する SFZListBoxControl インスタンスの 現在地(SFYControl::GetCurrentValue 関数で取得できる値)の文字列を描画します。
  5. タイトルの配置は、 SFZComboBoxControl::SetHorizontalAlign 関数と SFZComboBoxControl::SetVerticalAlign 関数で設定します。
  6. タイトルのフォントと色は、 SFZComboBoxControl::SetFont 関数と SFZComboBoxControl::SetTitleColor 関数で設定します。
  7. コンボボックスコントロールがフォーカス状態にあるとき、 コンテンツ領域の横幅よりも長いタイトルは、 SFZComboBoxControl::SetScrollDirection 関数、 SFZComboBoxControl::SetScrollInterval 関数、 SFZComboBoxControl::SetScrollStep 関数で設定されたパラメータに応じてスクロールして描画します。
  8. コンテンツ領域を含むタイトル表示ベベル領域と矢印(下三角形)表示ベベル領域、影、矢印(下三角形)は SFYButtonControl::SetButtonColor 関数、 SFYButtonControl::SetFocusColor 関数、 SFYButtonControl::SetShadowColor 関数、 SFZComboBoxControl::SetArrowColor 関数で設定した色で描画します。
  9. 実際のタイトルの描画は、 このクラスが内部で保持する SFYWidget クラスに委譲して行われます。

図 349. コンボボックスコントロールの拡大図[活性状態または操作可能状態]


コンボボックスコントロールの拡大図[活性状態または操作可能状態、非押下時]

タイトルはタイトル表示ベベル領域の幅2ピクセル分の枠(フォーカス・フレーム)で囲まれるコンテンツ領域に描画されます。

詳細情報 : SFYButtonControl::DrawButton | SFYButtonControl::DrawShadow

図 350. コンボボックスコントロールの拡大図[非活性状態]


コンボボックスコントロールの拡大図[非活性状態]

タイトルは SFZComboBoxControl::SetTitleColor 関数で設定した色を非活性状態に合わせて補正した色で描画されます。

矢印(下三角形)は SFZComboBoxControl::SetArrowColor 関数で設定した色を非活性状態に合わせて補正した色で描画されます。

詳細情報 : SFYButtonControl::DrawButton | SFYButtonControl::DrawShadow

図 351. コンボボックスコントロールの拡大図[フォーカス状態・非押下時]

図 352. コンボボックスコントロールの拡大図[フォーカス状態・押下時]

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

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

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

内部実装

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

/*protected virtual */Void SFZComboBoxControl::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    SFXRectangle                                lx;
    SFXRectangle                                wx;

    lx.Set(DrawShadow(graphics, GetLocalBound()));
    wx.Set(lx.GetOrigin(), lx.GetWidth() - lx.GetHeight(), lx.GetHeight());
    DrawButton(graphics, wx);
    DrawButton(graphics, lx.SetLeft(wx.GetRight()));
    DrawTab(graphics, lx);
    return;
}// SFZComboBoxControl::HandleRenderRequest //

参照

SFZComboBoxControl::DrawTab | SFYButtonControl::DrawButton | SFYButtonControl::DrawShadow | SFZComboBoxControl::SetTitleColor | SFZComboBoxControl::SetArrowColor | SFYButtonControl::SetButtonColor | SFYButtonControl::SetFocusColor | SFYButtonControl::SetShadowColor | SFYButtonControl::SetOperateKey | SFZListBoxControl | SFYControl::GetCurrentValue | SFYWidget | SFYResponder::Invalidate | SFYResponder::Render | SFYResponder::InvokeBackward | 描画イベント[SFEVT_RESPONDER_RENDER] | 描画イベント専用ハンドラ[XANDLER_DECLARE_VOIDRENDER] | 描画処理 | 状態


SFZComboBoxControl::Insert
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールに指定された項目を挿入します。
[ public ]
SFCError Insert(
    SInt32 index           // 項目のインデックス
    ItemRecConstRef item   // アイテム構造体
);
[ public ]
SFCError Insert(
    SInt32 index           // 項目のインデックス
    ItemRecConstPtr item   // アイテム構造体へのポインタ
    SInt32 length          // 挿入する項目数
);
[ public ]
SFCError Insert(
    SInt32 index                 // 項目のインデックス
    SFXWideStringConstRef text   // ボディ文字列
);
[ public ]
SFCError Insert(
    SInt32 index                 // 項目のインデックス
    SFXWideStringConstPtr text   // ボディ文字列へのポインタ
    SInt32 length                // 挿入する項目数
);

戻り値

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

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の指定されたインデックスの位置に指定された項目を挿入します。

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

インデックスが最大値以上の場合は末尾に挿入されます。

[Note] 注意

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

参照

SFZComboBoxControl::InsertFirst | SFZComboBoxControl::InsertLast | SFZComboBoxControl::Remove | SFZComboBoxControl::Clear | SFZComboBoxControl::GetItemCount | SFZComboBoxControl::ItemRec | SFZFlexListBoxControl


SFZComboBoxControl::InsertFirst
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの先頭に指定された項目を挿入します。
[ public ]
SFCError InsertFirst(
    ItemRecConstRef item   // アイテム構造体
);
[ public ]
SFCError InsertFirst(
    ItemRecConstPtr item   // アイテム構造体へのポインタ
    SInt32 length          // 挿入する項目数
);
[ public ]
SFCError InsertFirst(
    SFXWideStringConstRef text   // ボディ文字列
);
[ public ]
SFCError InsertFirst(
    SFXWideStringConstPtr text   // ボディ文字列へのポインタ
    SInt32 length                // 挿入する項目数
);

戻り値

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

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の先頭に指定された項目を挿入します。

[Note] 注意

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

参照

SFZComboBoxControl::InsertLast | SFZComboBoxControl::Insert | SFZComboBoxControl::RemoveFirst | SFZComboBoxControl::Clear | SFZComboBoxControl::GetItemCount | SFZComboBoxControl::ItemRec | SFZFlexListBoxControl


SFZComboBoxControl::InsertLast
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールの末尾に指定された項目を挿入します。
[ public ]
SFCError InsertLast(
    ItemRecConstRef item   // アイテム構造体
);
[ public ]
SFCError InsertLast(
    ItemRecConstPtr item   // アイテム構造体へのポインタ
    SInt32 length          // 挿入する項目数
);
[ public ]
SFCError InsertLast(
    SFXWideStringConstRef text   // ボディ文字列
);
[ public ]
SFCError InsertLast(
    SFXWideStringConstPtr text   // ボディ文字列へのポインタ
    SInt32 length                // 挿入する項目数
);

戻り値

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

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の末尾に指定された項目を挿入します。

[Note] 注意

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

参照

SFZComboBoxControl::InsertFirst | SFZComboBoxControl::Insert | SFZComboBoxControl::RemoveLast | SFZComboBoxControl::Clear | SFZComboBoxControl::GetItemCount | SFZComboBoxControl::ItemRec | SFZFlexListBoxControl


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

引数

exception

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

戻り値

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

解説

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

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

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

使用例

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

// コンボボックスのインスタンスを生成する
SFCError error;
SFZComboBoxControlSmp _combobox;

if ((_combobox = SFZComboBoxControl::NewInstance(&error)) != null) {
    // ...
}

SFZComboBoxControl::Remove
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の指定されたインデックスの位置または範囲の項目を削除します。
[ public ]
Void Remove(
    SInt32 index   // 項目のインデックス
);
[ public ]
Void Remove(
    SInt32 begin   // 削除開始位置 (この位置を含む)
    SInt32 end     // 削除終了位置 (この位置を含まない)
);

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)内の指定されたインデックスの項目を削除します。

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

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

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

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

[Note] 注意

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

参照

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


SFZComboBoxControl::RemoveFirst
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の先頭の項目を削除します。
[ public ]
Void RemoveFirst(Void);

解説

この関数は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)内の先頭の項目を削除します。

[Note] 注意

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

参照

SFZComboBoxControl::Clear | SFZComboBoxControl::Remove | SFZComboBoxControl::RemoveLast | SFZComboBoxControl::InsertFirst | SFZComboBoxControl::GetItemCount | SFZFlexListBoxControl


SFZComboBoxControl::RemoveLast
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の末尾の項目を削除します。
[ public ]
Void RemoveLast(Void);

解説

この関数は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)内の末尾の項目を削除します。

[Note] 注意

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

参照

SFZComboBoxControl::Clear | SFZComboBoxControl::RemoveFirst | SFZComboBoxControl::Remove | SFZComboBoxControl::InsertLast | SFZComboBoxControl::GetItemCount | SFZFlexListBoxControl


SFZComboBoxControl::SetArrowColor
矢印の色を設定します。
[ public ]
Void SetArrowColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、 ボタンの矢印(下三角形)を描画する色 (SFXRGBColor)を設定します。

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

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

[Note] 色の明度

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

参照

SFZComboBoxControl::GetArrowColor | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFZComboBoxControl::SetFont
タイトルのフォントを設定します。
[ public ]
Void SetFont(
    TextEnum textEnum   // 文字列定数
    AEEFont param       // フォント
);
[ public ]
Void SetFont(
    AEEFont param   // フォント
);

解説

この関数は、 文字列定数(SFZComboBoxControl::TextEnum)に対応するフォントを設定します。

文字列定数を指定しない場合は、ボディのフォントを設定します。

参照

SFZComboBoxControl::TextEnum | SFZComboBoxControl::GetFont | BREW API AEEFont


SFZComboBoxControl::SetHorizontalAlign
タイトルの水平アライメントを設定します。
[ public ]
Void SetHorizontalAlign(
    HorizontalEnum param   // タイトルの水平アライメント
);

解説

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

デフォルト値: SFZComboBoxControl::DEFAULT_HORIZONTAL

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

参照

SFZComboBoxControl::GetHorizontalAlign | SFZComboBoxControl::HorizontalEnum


SFZComboBoxControl::SetItemAccessKey
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールについて、 指定された項目にアクセスキーとその絵文字を設定します。
[ public ]
SFCError SetItemAccessKey(
    SInt32 index        // 項目のインデックス
    AVKType key         // ダイレクトアクセスキー
    WChar keyIcon = 0   // ダイレクトアクセスキーの絵文字
);

戻り値

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

解説

この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)について、 指定された項目にダイレクトアクセスキーとその絵文字を設定します。

使用例

以下は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールについて、 指定された項目にアクセスキーとその絵文字を設定するコードです。

// フレックスリストボックスコントロールの最初の項目に、アクセスキーとして AVK_1、その絵文字として 0xFBF6 を設定する
_combobox->SetItemAccessKey(0, AVK_1, 0xFBF6);

参照

SFZComboBoxControl::GetItemAccessKey | AVKType


SFZComboBoxControl::SetItemIconImage
指定された項目のアイコン定数に対応するアイコン画像を設定します。
[ public ]
SFCError SetItemIconImage(
    SInt32 index           // 項目のインデックス
    IconEnum iconEnum      // アイコン定数
    SFXPathConstRef path   // リソースファイルのパス
);
[ public ]
SFCError SetItemIconImage(
    SInt32 index           // 項目のインデックス
    IconEnum iconEnum      // アイコン定数
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError SetItemIconImage(
    SInt32 index                // 項目のインデックス
    IconEnum iconEnum           // アイコン定数
    SFBImageSmpConstRef param   // アイコン画像
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • index 引数に指定したインデックスの項目が存在しないとき、 または画像サイズの X または Y 成分が 0 以下のときや画像にアニメーションが含まれるとき: SFERR_INVALID_PARAM
  • BREW API IShell インターフェースのインスタンスが取得できないとき、 または画像のロードに失敗したとき: SFERR_FAILED

解説

この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目のアイコン定数 (SFZComboBoxControl::IconEnum) に対応するアイコン画像を設定します。

画像オブジェクトを直接、あるいは、リソースファイルから読み込むように指定します。

画像サイズの X または Y 成分が 0 以下のときや画像にアニメーションが含まれるときは、SFERR_INVALID_PARAM が返ります。

参照

SFZComboBoxControl::GetItemIconImage | SFZFlexListBoxControl | SFZComboBoxControl::IconEnum


SFZComboBoxControl::SetItemText
指定された項目の文字列定数に対応する文字列を設定します。
[ public ]
SFCError SetItemText(
    SInt32 index           // 項目のインデックス
    TextEnum textEnum      // 文字列定数
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError SetItemText(
    SInt32 index                  // 項目のインデックス
    TextEnum textEnum             // 文字列定数
    SFXWideStringConstRef param   // 文字列
);
[ public ]
SFCError SetItemText(
    SInt32 index           // 項目のインデックス
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError SetItemText(
    SInt32 index                  // 項目のインデックス
    SFXWideStringConstRef param   // 文字列
);

戻り値

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

解説

この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目の文字列定数 (SFZComboBoxControl::TextEnum) に対応する文字列を設定します。

文字列定数(textEnum 引数)を指定しなかった場合は、 ボディ文字列を設定します。

参照

SFZComboBoxControl::GetItemText | SFZFlexListBoxControl | SFZComboBoxControl::TextEnum


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

解説

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

デフォルト値: SFZComboBoxControl::DEFAULT_DIRECTION

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

参照

SFZComboBoxControl::GetScrollDirection | SFZComboBoxControl::DirectionEnum


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

解説

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

デフォルト値: SFZComboBoxControl::DEFAULT_SCROLL ミリ秒

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

参照

SFZComboBoxControl::GetScrollInterval | SFZComboBoxControl::DefaultEnum


SFZComboBoxControl::SetScrollStep
タイトルのスクロール移動量を設定します。[単位:ピクセル]
[ public ]
Void SetScrollStep(
    SInt16 param   // タイトルのスクロール移動量
);

解説

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

−1(デフォルト値)を設定すると、使用しているフォントの半角空白文字 1 文字分(" ")の幅がスクロール移動量となります。

デフォルト値: SFZComboBoxControl::DEFAULT_STEP ピクセル

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

参照

SFZComboBoxControl::GetScrollStep | SFZComboBoxControl::DefaultEnum


SFZComboBoxControl::SetSpaceSize
タイトルの要素間スペースサイズを設定します。[単位:ピクセル]
[ public ]
Void SetSpaceSize(
    SInt16 param   // タイトルの要素間スペースサイズ
);

解説

この関数は、下図にあるタイトルの要素間スペースサイズを設定します。[単位:ピクセル]

デフォルト値: 2 ピクセル

参照

SFZComboBoxControl::GetSpaceSize


SFZComboBoxControl::SetTitleColor
タイトルの色を設定します。
[ public ]
Void SetTitleColor(
    TextEnum textEnum           // 文字列定数
    SFXRGBColorConstRef param   // タイトルの色
);
[ public ]
Void SetTitleColor(
    SFXRGBColorConstRef param   // タイトルの色
);

解説

この関数は、タイトルの色を設定します。

文字列定数(SFZComboBoxControl::TextEnum)に対応するタイトルを描画する色を設定します。

文字列定数を指定しない場合は、タイトルの色を設定します。

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

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

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

参照

SFZComboBoxControl::TextEnum | SFZComboBoxControl::GetTitleColor | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


SFZComboBoxControl::SetVerticalAlign
タイトルの垂直アライメントを設定します。
[ public ]
Void SetVerticalAlign(
    VerticalEnum param   // タイトルの垂直アライメント
);

解説

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

デフォルト値: SFZComboBoxControl::DEFAULT_VERTICAL

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

参照

SFZComboBoxControl::GetVerticalAlign | SFZComboBoxControl::VerticalEnum


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

解説

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

デフォルト値: SFZComboBoxControl::DEFAULT_WAIT ミリ秒

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

参照

SFZComboBoxControl::GetWaitInterval | SFZComboBoxControl::DefaultEnum


SFZComboBoxControl::StartScroll
タイトルのスクロールを開始します.
[ public ]
Void StartScroll(Void);

解説

この関数は、タイトルのスクロールを開始します。

仮想領域の幅がタイトルの幅よりも大きいときは何もしません。

SFEVT_APP_SUSPEND イベントと SFEVT_APP_RESUME イベントに自動的に応答しますが、 SFEVT_APP_SUSPEND イベントの受信後から SFEVT_APP_RESUME イベントの受信までの間にこの関数を呼び出したときの動作は未定です。

参照

SFZComboBoxControl::StopScroll


SFZComboBoxControl::StopScroll
タイトルのスクロールを停止します.
[ public ]
Void StopScroll(Void);

解説

この関数は、タイトルのスクロールを停止します。

参照

SFZComboBoxControl::StartScroll


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

参照

SFYResponder::GetType | SFYResponder::SetType


SFZComboBoxControl::DefaultEnum
各種パラメータのデフォルト値を表します。
enum DefaultEnum {
    DEFAULT_WAIT   = 1000,    // スクロール開始までの待ち時間(単位:ミリ秒)
    DEFAULT_SCROLL = 100,     // スクロールインターバル(単位:ミリ秒)
    DEFAULT_STEP   = -1       // スクロール移動量(単位:ピクセル)
};
SFMTYPEDEFTYPE(DefaultEnum)

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

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

SFZComboBoxControl::IconEnum
タイトルまたはリスト項目内の操作対象アイコン画像を指定する定数です。
enum IconEnum {
    ICON_BODY_NORMAL                    = 0,
    ICON_BODY_SELECT,
    ICON_FOOTER_NORMAL,
    ICON_FOOTER_SELECT,
    ICON_LIMIT
};
SFMTYPEDEFTYPE(IconEnum)

解説

ICON_BODY_NORMAL: 通常時のボディアイコン画像

ICON_BODY_SELECT: 選択時のボディアイコン画像 (タイトルには利用されません)

ICON_FOOTER_NORMAL: 通常時のフッタアイコン画像

ICON_FOOTER_SELECT: 選択時のフッタアイコン画像 (タイトルには利用されません)


SFZComboBoxControl::ItemRec
項目の各種属性を表す構造体です。 (アイテム構造体)
SFMTYPEDEFSTRUCT(ItemRec)
struct ItemRec {
    ItemPartRec     normal;     // 通常時の属性
    // SFXWideString   normal.header.text;
    // SFXWideString   normal.body.text;
    // SFBImageSmp     normal.body.icon;
    // SFBImageSmp     normal.footer.icon;

    ItemPartRec     select;     // 選択時の属性
    // SFXWideString   select.header.text;
    // SFXWideString   select.body.text;
    // SFBImageSmp     select.body.icon;
    // SFBImageSmp     select.footer.icon;

    PropertyRec     propery;    // プロパティ
    // UInt32          id;
    // AVKType         key;
    // Bool            enable;
};

解説

アイテム構造体を利用して、項目を挿入することができます。

参照

SFZComboBoxControl::Insert


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

SFZComboBoxControl::TextEnum
タイトルまたはリスト項目内の操作対象文字列を指定する定数です。
enum TextEnum {
    TEXT_HEADER_NORMAL                  = 0,
    TEXT_HEADER_SELECT,
    TEXT_BODY_NORMAL,
    TEXT_BODY_SELECT,
    TEXT_LIMIT
};
SFMTYPEDEFTYPE(TextEnum)

解説

TEXT_HEADER_NORMAL: 通常時のヘッダ文字列

TEXT_HEADER_SELECT: 選択時のヘッダ文字列 (タイトルには利用されません)

TEXT_BODY_NORMAL: 通常時のボディ文字列

TEXT_BODY_SELECT: 選択時のボディ文字列 (タイトルには利用されません)