SophiaFramework UNIVERSE 5.3 |
#include <SFZComboBoxControl.h.hpp>
class SFZComboBoxControl : public SFYButtonControl;
SFMTYPEDEFRESPONDER(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 関数で設定するスクロールキーを使用して項目リストをスクロールします。
フレックスリストボックスコントロールが開いている状態で リスト内のある項目を選択して操作キーまたはアクセスキーを押下すると、 フレックスリストボックスコントロールが閉じます。 そして、選択した項目がコンボボックスコントロールに表示されます。 [前提条件: 選択項目が SFZFlexListBoxControl::SetItemEnable 関数により有効化("true" が設定)されている必要があります。]
このとき、コンボボックスコントロールは 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, 選択した項目のインデックス)] を受信します。
Tip | |
---|---|
フレックスリストボックスコントロールの操作キーは、SFYBoxControl::SetOperateKey 関数を使用して設定します。 デフォルトでは、セレクトキーがフレックスリストボックスコントロールの操作キーとして割り当てられています。 |
Tip | |
---|---|
アクセスキーは、SFZFlexListBoxControl::SetItemAccessKey 関数を使用して設定します。 |
注意 | |
---|---|
選択項目が SFZFlexListBoxControl::SetItemEnable 関数により無効化("false" が設定)されているとき、 操作キーまたはアクセスキーを押しても何も起こりません。 |
フレックスリストボックスコントロールが開いている状態で ESCAPE キーを押下すると、フレックスリストボックスコントロールが閉じます。 コンボボックスコントロールの内容はフレックスリストボックスコントロールが開く以前と同じです。
Tip | |
---|---|
ESCAPE キーは、フレックスリストボックスコントロールの SFZFlexListBoxControl::SetEscapeKey 関数を使用して設定します。 デフォルトでは、クリアキーが ESCAPE キーとして割り当てられています。 |
注意 | |
---|---|
この場合、コンボボックスコントロールで結果イベントは発生しません。 |
参照: 結果イベント[SFEVT_RESPONDER_RESULT]
以下はコンボボックスコントロールの仕様です。
フレックスリストボックスコントロール | |
---|---|
詳細は、SFZFlexListBoxControl クラスの解説を参照してください。 |
コンボボックスコントロールの仕様上の制限 | |
---|---|
最小値は常に 0 です。 現在値は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)で選択されている項目のインデックスを表します。 最大値は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)の項目数を表します。 (※この機能は将来的に廃止予定です。 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)の項目数を取得するには、 SFZComboBoxControl::GetItemCount 関数を呼び出してください。) SFYControl::SetMinimumValue 関数または SFYControl::SetMaximumValue 関数を使用して最小値または最大値を変更してはいけません。 |
□コンボボックスコントロールの構成
デフォルトの実装では、 コンボボックスコントロールは状態に応じて以下のように描画されます。
以下は、コンボボックスコントロールを生成するためのコードです。
// ボディ文字列だけの実装 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; }
実行結果: (左: ボディ文字列のみ、右: ヘッダ文字列、ボディアイコン画像、ボディ文字列を含む)
注意 | |
---|---|
コンボボックスコントロールに内部的に保持されるフレックスリストボックスコントロールの領域は、 追加された項目とコンボボックスコントロールが配置される親レスポンダのローカル領域によって自動的に設定されます。 フレックスリストボックスコントロールを描画するには、 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 タイトルの垂直方向のアライメントを表す定数です。
|
[ protected, explicit ] SFZComboBoxControl(Void);
このコンストラクタは、以下の初期化処理を行います。
表 255. コンボボックスコントロールに登録するハンドラ
イベント | ハンドラの内容 |
---|---|
このコンボボックスコントロールがフォーカス状態になった時に発生する状態イベント[SFEVT_RESPONDER_STATE] | タイトルのスクロールを開始します。 |
このコンボボックスコントロールが非フォーカス状態になった時に発生する状態イベント[SFEVT_RESPONDER_STATE] | タイトルのスクロールを停止します。 |
SFYButtonControl::GetStatePress 関数によってボタンの押下状態が設定された時に発生する状態イベント[SFEVT_RESPONDER_STATE] | 押下状態の時は影領域を左上に、そうでない場合は影領域を右下に配置します。 |
このコンボボックスコントロールの現在値が変更された時に発生する値イベント[SFEVT_RESPONDER_STATE] | フレックスリストボックスコントロールで現在選択されている項目をコンボボックスコントロールのタイトルに設定します。 |
注意 | |
---|---|
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]
[ protected, virtual ] virtual ~SFZComboBoxControl(Void);
このデストラクタは、何も行いません。
このデストラクタの内部実装は以下の通りです。
/*protected virtual */SFZComboBoxControl::~SFZComboBoxControl(Void) { }// SFZComboBoxControl::~SFZComboBoxControl //
[ 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)の末尾に項目を追加します。
非推奨 (廃止予定 API) | |
---|---|
この関数はまもなく廃止されます。 この関数の代わりに、SFZComboBoxControl::InsertLast 関数を使用してください。 |
SFZComboBoxControl::InsertLast | SFZComboBoxControl::Remove | SFZComboBoxControl::Clear | SFZFlexListBoxControl
[ public ] Void Clear(Void);
この関数は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)のすべての項目を削除します。
SFZComboBoxControl::InsertLast | SFZComboBoxControl::Insert | SFZComboBoxControl::InsertFirst | SFZComboBoxControl::Append | SFZComboBoxControl::Remove | SFZFlexListBoxControl
[ protected, const ] Void DrawTab( SFXGraphicsPtr graphics // グラフィックスオブジェクト SFXRectangleConstRef rectangle // コンボボックスの矢印を描画する矩形領域 );
この関数は、 指定された矩形領域にコンボボックスの矢印を描画します。
独自の処理を行う場合は、この関数をオーバーライドします。
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 //
[ public, const ] SFXRGBColorConstRef GetArrowColor(Void);
ボタンの矢印を描画する色。
この関数は、矢印の色を取得します。
[ public, const ] AEEFont GetFont( TextEnum textEnum // 文字列定数 );
[ public, const ] AEEFont GetFont(Void);
フォント。
この関数は、フォントを取得します。
指定した文字列定数(SFZComboBoxControl::TextEnum)に対応するフォントが返されます。
文字列定数を指定しない場合はボディのフォントが返されます。
[ public, const ] HorizontalEnum GetHorizontalAlign(Void);
タイトルの水平アライメントの値。
この関数は、タイトルの水平アライメントの値を取得します。
コンボボックスコントロールが内部で保持するフレックスリストボックス(SFZFlexListBoxControl)について、 指定した項目に設定されたダイレクトアクセスキーが返ります。 ダイレクトアクセスキーが設定されていない場合は "0" が返ります。
[ public, const ] SInt32 GetItemCount(Void);
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の項目数。
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の項目数を取得します。
[ public, const ] SFBImageSmpConstRef GetItemIconImage( SInt32 index // 項目のインデックス IconEnum iconEnum // アイコン定数 );
項目のアイコン定数 (SFZComboBoxControl::IconEnum) に対応するアイコン画像。
この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目のアイコン定数 (SFZComboBoxControl::IconEnum) に対応するアイコン画像を取得します。
[ public, const ] SFXWideStringConstRef GetItemText( SInt32 index // 項目のインデックス TextEnum textEnum // 文字列定数 );
[ public, const ] SFXWideStringConstRef GetItemText( SInt32 index // 項目のインデックス );
項目の文字列定数に対応する文字列。
文字列定数を指定しなかった場合は、ボディ文字列。
この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目の文字列定数 (SFZComboBoxControl::TextEnum) に対応する文字列を取得します。
文字列定数を指定しなかった場合は、 ボディ文字列を取得します。
[ public, const ] SFZFlexListBoxControlSmpConstRef GetListBoxControl(Void);
コンボボックスコントロールで利用されるフレックスリストボックスコントロール。
この関数は、 コンボボックスコントロールが保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)を取得します。
開発者は取得したフレックスリストボックスコントロールを使用して、 項目の背景色や前景色を変更することができます。
フレックスリストボックスコントロール | |
---|---|
詳細は、SFZFlexListBoxControl クラスの解説を参照してください。 |
以下は、フレックスリストボックスコントロールを取得してグリッド線を有効にしています。
SFZComboBoxControlSmp combo; SFZFlexListBoxControlSmp list; // コンボボックスのインスタンスを作成する if ((combo = SFZComboBoxControl::NewInstance()) != null) { // ・・・ } // フレックスリストボックスを取得する if ((list = combo->GetListBoxControl()) != null) { // グリッド線を有効にする list->SetGridLineEnable(true); }
[ public, const ] SInt32 GetMaximumValue(Void);
コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の項目数。
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール内の項目数を取得します。
非推奨 (廃止予定 API) | |
---|---|
この関数はまもなく廃止されます。 この関数の代わりに、SFZComboBoxControl::GetItemCount 関数を使用してください。 |
[ public, const ] DirectionEnum GetScrollDirection(Void);
タイトルのスクロール移動方向。
この関数は、タイトルのスクロール移動方向を取得します。
[ public, const ] UInt32 GetScrollInterval(Void);
スクロールインターバル。[単位:ミリ秒]
この関数は、タイトルのスクロールインターバルを取得します。[単位:ミリ秒]
[ public, const ] SInt16 GetScrollStep(Void);
スクロール移動量。[単位:ピクセル]
この関数は、タイトルのスクロール移動量を取得します。[単位:ピクセル]
[ public, const ] SInt16 GetSpaceSize(Void);
タイトルの要素間スペースサイズ。[単位:ピクセル]
この関数は、タイトルの要素間スペースサイズを取得します。[単位:ピクセル]
[ public, const ] SFXRGBColorConstRef GetTitleColor( TextEnum textEnum // 文字列定数 );
[ public, const ] SFXRGBColorConstRef GetTitleColor(Void);
タイトルの文字色。
この関数は、タイトルの文字色を取得します。
指定した文字列定数(SFZComboBoxControl::TextEnum)に対応するタイトルの文字色が返されます。
文字列定数を指定しない場合はボディの文字色が返されます。
[ public, const ] VerticalEnum GetVerticalAlign(Void);
タイトルの垂直アライメントの値。
この関数は、タイトルの垂直アライメントの値を取得します。
[ public, const ] UInt32 GetWaitInterval(Void);
スクロール開始までの待ち時間。[単位:ミリ秒]
この関数は、タイトルのスクロール開始までの待ち時間を取得します。[単位:ミリ秒]
[ protected, virtual, const ] Void HandleBoundOptimize( SFXRectanglePtr rectangle // 矩形 );
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] を受信したときに呼び出されます。
引数 rectangle で指定した矩形領域に収まる範囲内で、レスポンダの最適な領域を計算します。
計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。
デフォルトの実装は以下の通りです。
現在値の項目を基準に最適なサイズを計算します。
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント] | |
---|---|
SFYResponder::GetSuitableBound 関数は、 引数にヒント領域を指定した場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundOptimize 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle にはヒント領域が初期設定されています。 |
(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 //
[ protected, virtual, const ] Void HandleBoundRequest( SFXRectanglePtr rectangle // 計算された矩形 );
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] を受信したときに呼び出されます。
レスポンダの最適な領域を計算します。
計算結果のレスポンダに最適なサイズは、rectangle 引数の size 要素(サイズ)に格納されます。 なお、領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)はこの関数内で変更しないことを推奨します。
デフォルトの実装は以下の通りです。
現在値の項目を基準に最適なサイズを計算します。
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント] | |||||
---|---|---|---|---|---|
SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundRequest 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle には実領域が初期設定されています。
|
(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 //
[ protected, virtual ] Void HandleBoundVirtual(Void);
この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] を受信したときに呼び出されます。
仮想領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、 タイトル表示領域を内部で保持するウィジェット(SFYFlexListItemWidget) の実領域として設定します。
タイトルは、内部でウィジェット (SFYFlexListItemWidget) として保持されます。
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントの送信 | |
---|---|
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントは SFYResponder::SetRealBound または SFYResponder::SetVirtualBound 関数の呼び出しによって仮想領域が変化したときに発生します。 |
仮想領域の変更処理 | |
---|---|
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 //
[ 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 //
[ protected, virtual, const ] Void HandleRenderRequest( SFXGraphicsPtr graphics // グラフィックスオブジェクト );
この関数は、 描画イベント [SFXEvent(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST, graphics)] を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、 状態に応じて以下のようなコンボボックスコントロールを描画します。 ボタン部分の描画の詳細については、SFYButtonControl::DrawButton 関数と SFYButtonControl::DrawShadow 関数の説明を参照してください。
■コンボボックスコントロールの構成
■コンボボックスコントロールの描画処理
レスポンダの描画手順 | |||||
---|---|---|---|---|---|
|
この関数の内部実装は以下の通りです。
/*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] | 描画処理 | 状態
[ 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 // 挿入する項目数 );
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の指定されたインデックスの位置に指定された項目を挿入します。
インデックスが 0 以下の場合は先頭に挿入されます。
インデックスが最大値以上の場合は末尾に挿入されます。
注意 | |
---|---|
この関数で項目を追加した後、 項目数(SFZComboBoxControl::GetItemCount 関数の戻り値)は 1 だけ増加します。 |
SFZComboBoxControl::InsertFirst | SFZComboBoxControl::InsertLast | SFZComboBoxControl::Remove | SFZComboBoxControl::Clear | SFZComboBoxControl::GetItemCount | SFZComboBoxControl::ItemRec | SFZFlexListBoxControl
[ public ] SFCError InsertFirst( ItemRecConstRef item // アイテム構造体 );
[ public ] SFCError InsertFirst( ItemRecConstPtr item // アイテム構造体へのポインタ SInt32 length // 挿入する項目数 );
[ public ] SFCError InsertFirst( SFXWideStringConstRef text // ボディ文字列 );
[ public ] SFCError InsertFirst( SFXWideStringConstPtr text // ボディ文字列へのポインタ SInt32 length // 挿入する項目数 );
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の先頭に指定された項目を挿入します。
注意 | |
---|---|
この関数で項目を追加した後、 項目数(SFZComboBoxControl::GetItemCount 関数の戻り値)は 1 だけ増加します。 |
SFZComboBoxControl::InsertLast | SFZComboBoxControl::Insert | SFZComboBoxControl::RemoveFirst | SFZComboBoxControl::Clear | SFZComboBoxControl::GetItemCount | SFZComboBoxControl::ItemRec | SFZFlexListBoxControl
[ public ] SFCError InsertLast( ItemRecConstRef item // アイテム構造体 );
[ public ] SFCError InsertLast( ItemRecConstPtr item // アイテム構造体へのポインタ SInt32 length // 挿入する項目数 );
[ public ] SFCError InsertLast( SFXWideStringConstRef text // ボディ文字列 );
[ public ] SFCError InsertLast( SFXWideStringConstPtr text // ボディ文字列へのポインタ SInt32 length // 挿入する項目数 );
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)の末尾に指定された項目を挿入します。
注意 | |
---|---|
この関数で項目を追加した後、 項目数(SFZComboBoxControl::GetItemCount 関数の戻り値)は 1 だけ増加します。 |
SFZComboBoxControl::InsertFirst | SFZComboBoxControl::Insert | SFZComboBoxControl::RemoveLast | SFZComboBoxControl::Clear | SFZComboBoxControl::GetItemCount | SFZComboBoxControl::ItemRec | SFZFlexListBoxControl
[ public, static ] SFZComboBoxControlSmp NewInstance( SFCErrorPtr exception = null // エラー値 );
関数内部で発生したエラー値を返します。
この関数は、SFZComboBoxControl クラスの新しいインスタンスを作成します。
インスタンスの作成に成功した場合は null 以外のポインタを返します。 失敗した場合は、null ポインタを返します。
exception 引数を指定した場合、 この引数にはエラー値が返ります。
以下は、コンボボックスのインスタンスを生成するためのコードです。
// コンボボックスのインスタンスを生成する SFCError error; SFZComboBoxControlSmp _combobox; if ((_combobox = SFZComboBoxControl::NewInstance(&error)) != null) { // ... }
[ public ] Void Remove( SInt32 index // 項目のインデックス );
[ public ] Void Remove( SInt32 begin // 削除開始位置 (この位置を含む) SInt32 end // 削除終了位置 (この位置を含まない) );
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)内の指定されたインデックスの項目を削除します。
削除する項目の位置が 0 より小さい場合、または項目数以上の場合、項目の削除は行われません。
削除開始位置が項目数以上の場合、または 削除終了位置が 0 以下の場合、項目の削除は行われません。
削除開始位置が 0 より小さい場合、削除開始位置は 0 に再設定されます。
削除終了位置が項目数より大きい場合、削除終了位置は項目数に再設定されます。
注意 | |
---|---|
この関数で項目を削除した後、 項目数(SFZComboBoxControl::GetItemCount 関数の戻り値)は 1 だけ減少します。 |
SFZComboBoxControl::Clear | SFZComboBoxControl::RemoveFirst | SFZComboBoxControl::RemoveLast | SFZComboBoxControl::Insert | SFZComboBoxControl::GetItemCount | SFZFlexListBoxControl
[ public ] Void RemoveFirst(Void);
この関数は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)内の先頭の項目を削除します。
注意 | |
---|---|
この関数で項目を削除した後、 項目数(SFZComboBoxControl::GetItemCount 関数の戻り値)は 1 だけ減少します。 |
SFZComboBoxControl::Clear | SFZComboBoxControl::Remove | SFZComboBoxControl::RemoveLast | SFZComboBoxControl::InsertFirst | SFZComboBoxControl::GetItemCount | SFZFlexListBoxControl
[ public ] Void RemoveLast(Void);
この関数は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール (SFZFlexListBoxControl)内の末尾の項目を削除します。
注意 | |
---|---|
この関数で項目を削除した後、 項目数(SFZComboBoxControl::GetItemCount 関数の戻り値)は 1 だけ減少します。 |
SFZComboBoxControl::Clear | SFZComboBoxControl::RemoveFirst | SFZComboBoxControl::Remove | SFZComboBoxControl::InsertLast | SFZComboBoxControl::GetItemCount | SFZFlexListBoxControl
[ public ] Void SetArrowColor( SFXRGBColorConstRef param // 設定する色 );
この関数は、 ボタンの矢印(下三角形)を描画する色 (SFXRGBColor)を設定します。
デフォルト値: SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色]
非活性状態にあるときは、この関数で設定された色の明度が 0x7F より大きい場合はこの色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はこの色の RGB 値にそれぞれ 0x44 を加算した色で矢印(下三角形)は描画されます。
色の明度 | |
---|---|
色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。 |
[ public ] Void SetFont( TextEnum textEnum // 文字列定数 AEEFont param // フォント );
[ public ] Void SetFont( AEEFont param // フォント );
[ public ] Void SetHorizontalAlign( HorizontalEnum param // タイトルの水平アライメント );
この関数は、タイトルの水平アライメントを設定します。
デフォルト値: SFZComboBoxControl::DEFAULT_HORIZONTAL
SFZComboBoxControl::DEFAULT_HORIZONTAL の値は SFZComboBoxControl::HorizontalEnum を参照してください。
[ public ] SFCError SetItemAccessKey( SInt32 index // 項目のインデックス AVKType key // ダイレクトアクセスキー WChar keyIcon = 0 // ダイレクトアクセスキーの絵文字 );
この関数は、 コンボボックスコントロールが内部で保持するフレックスリストボックスコントロール(SFZFlexListBoxControl)について、 指定された項目にダイレクトアクセスキーとその絵文字を設定します。
以下は、コンボボックスコントロールが内部で保持するフレックスリストボックスコントロールについて、 指定された項目にアクセスキーとその絵文字を設定するコードです。
// フレックスリストボックスコントロールの最初の項目に、アクセスキーとして AVK_1、その絵文字として 0xFBF6 を設定する
_combobox->SetItemAccessKey(0, AVK_1, 0xFBF6);
[ 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 // アイコン画像 );
この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目のアイコン定数 (SFZComboBoxControl::IconEnum) に対応するアイコン画像を設定します。
画像オブジェクトを直接、あるいは、リソースファイルから読み込むように指定します。
画像サイズの X または Y 成分が 0 以下のときや画像にアニメーションが含まれるときは、SFERR_INVALID_PARAM が返ります。
[ 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 // 文字列 );
この関数は、このコンボボックスコントロールが内部で保持する、 フレックスリストボックスコントロール(SFZFlexListBoxControl)内の指定された項目の文字列定数 (SFZComboBoxControl::TextEnum) に対応する文字列を設定します。
文字列定数(textEnum 引数)を指定しなかった場合は、 ボディ文字列を設定します。
[ public ] Void SetScrollDirection( DirectionEnum param // タイトルのスクロール移動方向 );
この関数は、タイトルのスクロール移動方向を設定します。
デフォルト値: SFZComboBoxControl::DEFAULT_DIRECTION
SFZComboBoxControl::DEFAULT_DIRECTION の値は SFZComboBoxControl::DirectionEnum を参照してください。
この関数は、タイトルのスクロールインターバルを設定します。[単位:ミリ秒]
デフォルト値: SFZComboBoxControl::DEFAULT_SCROLL ミリ秒
SFZComboBoxControl::DEFAULT_SCROLL の値は SFZComboBoxControl::DefaultEnum を参照してください。
この関数は、1 回のスクロールで移動するピクセル数を設定します。[単位:ピクセル]
−1(デフォルト値)を設定すると、使用しているフォントの半角空白文字 1 文字分(" ")の幅がスクロール移動量となります。
デフォルト値: SFZComboBoxControl::DEFAULT_STEP ピクセル
SFZComboBoxControl::DEFAULT_STEP の値は SFZComboBoxControl::DefaultEnum を参照してください。
この関数は、下図にあるタイトルの要素間スペースサイズを設定します。[単位:ピクセル]
デフォルト値: 2 ピクセル
[ 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 | 状態
[ public ] Void SetVerticalAlign( VerticalEnum param // タイトルの垂直アライメント );
この関数は、タイトルの垂直アライメントを設定します。
デフォルト値: SFZComboBoxControl::DEFAULT_VERTICAL
SFZComboBoxControl::DEFAULT_VERTICAL の値は SFZComboBoxControl::VerticalEnum を参照してください。
この関数は、タイトルのスクロール開始までの待ち時間を設定します。[単位:ミリ秒]
デフォルト値: SFZComboBoxControl::DEFAULT_WAIT ミリ秒
SFZComboBoxControl::DEFAULT_WAIT の値は SFZComboBoxControl::DefaultEnum を参照してください。
[ public ] Void StartScroll(Void);
この関数は、タイトルのスクロールを開始します。
仮想領域の幅がタイトルの幅よりも大きいときは何もしません。
SFEVT_APP_SUSPEND イベントと SFEVT_APP_RESUME イベントに自動的に応答しますが、 SFEVT_APP_SUSPEND イベントの受信後から SFEVT_APP_RESUME イベントの受信までの間にこの関数を呼び出したときの動作は未定です。
[ public ] Void StopScroll(Void);
この関数は、タイトルのスクロールを停止します。
enum CodeEnum { CODE_TYPE = four_char_code('c', 'c', 'm', 'b') }; SFMTYPEDEFTYPE(CodeEnum)
enum DefaultEnum { DEFAULT_WAIT = 1000, // スクロール開始までの待ち時間(単位:ミリ秒) DEFAULT_SCROLL = 100, // スクロールインターバル(単位:ミリ秒) DEFAULT_STEP = -1 // スクロール移動量(単位:ピクセル) }; SFMTYPEDEFTYPE(DefaultEnum)
enum DirectionEnum { DIRECTION_LEFT = 0, // 左へスクロール DIRECTION_RIGHT = // 右へスクロール DEFAULT_DIRECTION = DIRECTION_LEFT // デフォルト値: 左へスクロール }; SFMTYPEDEFTYPE(DirectionEnum)
enum HorizontalEnum { HORIZONTAL_LEFT = 0, // 左詰め HORIZONTAL_CENTER = // 中央揃え HORIZONTAL_RIGHT = // 右詰め DEFAULT_HORIZONTAL = HORIZONTAL_CENTER // デフォルト設定: 中央揃え }; SFMTYPEDEFTYPE(HorizontalEnum)
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: 選択時のフッタアイコン画像 (タイトルには利用されません)
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; };
アイテム構造体を利用して、項目を挿入することができます。
enum VerticalEnum { VERTICAL_TOP = 0, // 上詰め VERTICAL_MIDDLE = // 中央揃え VERTICAL_BOTTOM = // 下詰め DEFAULT_VERTICAL = VERTICAL_MIDDLE // デフォルト値: 中央揃え }; SFMTYPEDEFTYPE(VerticalEnum)
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: 選択時のボディ文字列 (タイトルには利用されません)
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |