構文
typedef struct {
int id;
int ypos;
int xpos;
void *menuText;
int paletteIndex;
bool visible;
bool enabled;
bool selectable;
int showControl;
bool checked;
int font;
unsigned short itemOption;
} AM_MenuItem;
メンバー
- id
-
アイテムID:
メニュー表示関数でこのメニューアイテムを指定する必要がある場合は、1以上の正の値でアイテムIDを指定しておきます。静的に表示するだけで、指定する必要のないメニューアイテムには 0 を指定できます。
AM_MenuItem構造体の配列の最後の要素には -1 を指定します。
- ypos
-
Y座標:
0から始まる行位置、またはAM_PIXマクロでピクセル座標を指定します。 - xpos
-
X座標:
0から始まる文字位置、またはAM_PIXマクロでピクセル座標を指定します。 - menuText
-
表示データ:
showControlの値がAM_TEXT_EDITの場合は、AM_EditParam構造体を指すポインタを指定します。
showControlの値がAM_BMPFILEの場合は、BMPファイルの名前を指すポインタを指定します。
showControlの値がAM_SHIFT_MODEまたはAM_SHIFT_CANDIDATEの場合は、空文字("")を指すポインタを指定します。
showControlの値が上記以外の場合は、表示文字列を指すポインタを指定します。
- paletteIndex
-
パレットインデックス:
カラーパレットのインデックス値で表示色を指定します。独自のカラーパレットを登録していないときは、0 を指定します。
- visible
-
visible属性:
メニューアイテムを表示するときはtrueを、それ以外はfalseを指定します。
visible属性がfalseのときは、enabled、selectable、showControlの値によらずこのメニューアイテムは表示されません。
- enabled
-
enabled属性:
enabled属性がfalseのときは、AM_Option構造体のMenuDisabledForeColorメンバーで指定される色で表示し、このメニューアイテムのselectable属性がtrueであってもフォーカスが移動しません。
- selectable
-
selectable属性:
メニューアイテムにフォーカスを移動可能にするにはtrueを、それ以外はfalseを指定します。 - showControl
-
コントロールの種類:
メニューアイテムに追加するコントロールの種類を次のいずれかの値で指定します
値 説明 AM_NO_CONTROL コントロールを追加しません。 AM_TITLE_LINE メニューのタイトル行を表示するためのもので、文字列が自動的にセンタリングされ、行全体(128ドット)の背景がアイテムに指定されている背景色で描画されます。(Ver. 1.5.0以降) AM_TEXT_EDIT このメニューアイテムが入力フィールドの場合に指定します。 フォーカスがこのメニューアイテムにあるときは、menuTextで指定されたAM_EditParam構造体の設定に従って文字入力の編集制御を行います。 AM_SHIFT_MODE 現在のシフトモードを表示します。
[123] (数字モード)
[abc] (英小文字モード)
[ABC] (英大文字モード)
[HEX] (HEXモード)
AM_SHIFT_CANDIDATE 現在のシフトモードが英字モードまたはHEXモードのとき、入力候補文字を表示します。 AM_CHECK_BOX 表示文字列の前にチェックボックスを表示します。 AM_RADIO_BTN 表示文字列の前にラジオボタンを表示します。 AM_BMPFILE menuTextで指定されたファイル名のBMPファイルの画像を表示します。 AM_LIST_MARK 表示文字列の後に▼を表示します。文字列にはアンダーラインが表示されます。 AM_JUMP_MARK 表示文字列の前に▶を表示します。 AM_CLEAR_ICON 表示文字列の前に[CLR]アイコンを表示します。 AM_ENT_ICON 表示文字列の前に[ENT]アイコンを表示します。 AM_SCAN_ICON 表示文字列の前に[SCAN]アイコンを表示します。 AM_F1_ICON 表示文字列の前に[F1]アイコンを表示します。 AM_F2_ICON 表示文字列の前に[F2]アイコンを表示します。 AM_F3_ICON 表示文字列の前に[F3]アイコンを表示します。 AM_Q1_ICON 表示文字列の前に[Q1]アイコンを表示します。 AM_Q2_ICON 表示文字列の前に[Q2]アイコンを表示します。 AM_BS_ICON 表示文字列の前に[BS]アイコンを表示します。 AM_1_ICON 表示文字列の前に[1]アイコンを表示します。 AM_2_ICON 表示文字列の前に[2]アイコンを表示します。 AM_3_ICON 表示文字列の前に[3]アイコンを表示します。 AM_4_ICON 表示文字列の前に[4]アイコンを表示します。 AM_5_ICON 表示文字列の前に[5]アイコンを表示します。 AM_6_ICON 表示文字列の前に[6]アイコンを表示します。 AM_7_ICON 表示文字列の前に[7]アイコンを表示します。 AM_8_ICON 表示文字列の前に[8]アイコンを表示します。 AM_9_ICON 表示文字列の前に[9]アイコンを表示します。 AM_0_ICON 表示文字列の前に[0]アイコンを表示します。 AM_ASTER_ICON 表示文字列の前に[*]アイコンを表示します。
- checked
-
checked属性:
ラジオボタンまたはチェックボックスの初期状態を指定します。trueならばチェックした状態の表示を、それ以外はチェックしない状態の表示を行います。 - font
-
フォントの種類:
フォントの種類を次のいずれかの値で指定します。
値 説明 MEDIUM_FONT MEDIUM_FONTで表示する。 LARGE_FONT LARGE_FONTで表示する。 LARGE_FONT2 LARGE_FONT2で表示する。 HUGE_FONT HUGE_FONTで表示する。 0 フォントを指定しない。(デフォルトフォントで表示する。) - itemOption
-
その他のオプション:
値 説明 AM_MULTI_START AM_MULTI_STARTを指定したメニューアイテムからAM_MULTI_ENDを指定したメニューアイテムまでを一つのメニューアイテムとして扱います。 AM_MULTI_MID AM_MULTI_STARTとAM_MULTI_ENDの間にあるメニューアイテムにはAM_MULTI_MIDを指定する必要があります。 AM_MULTI_END (AM_MULTI_STARTの説明を参照してください。) 0 オプションを指定しない
解説
AM_MenuItem構造体で1個のメニューアイテムを表します。AM_MenuItem構造体の配列で一画面分のメニュー表示を定義します。
配列の最後の要素のidに -1 を指定して、配列の終端を表します。
同一の配列の中では、0または-1以外のidの値はユニークでなくてはなりません。
AM_CreateMenu関数またはAL_CreateList関数で、menuTableパラメータにAM_MenuItem構造体の配列を指すポインタを渡してメニューリソースの初期化を行います。
yposまたはxposを指定するとき、AM_PIXマクロを使用してピクセル座標を指定することができます。例えば AM_PIX(100) と記述するとピクセル座標で 100 を指定できます。
キーボードで文字入力を行う入力フィールドを定義するには、showControlにAM_TEXT_EDITを指定し、menuTextにAM_EditParam構造体を指すポインタを設定します。
画像を表示するには、showControlにAM_BMPFILEを指定し、menuTextにBMPファイルのファイル名を指すポインタを設定します。
メニューアイテムの表示色を指定するにはカラーパレットを使用します。
カラーパレットの実体は、AM_ColorPalette構造体の配列であり、その配列のインデックス値をpaletteIndexに指定することにより色を指定します。
次の手順であらかじめ独自のカラーパレットをメニューリソースに登録しておきます。
- AM_ColorPalette構造体の配列で、必要な種類のカラーパレットを定義します。
- AM_Option構造体を定義し、NumberOfColorPaletteメンバとColorPalettesメンバで上記のAM_ColorPalette構造体の配列を登録しておきます。
- AM_CreateMenu関数またはAL_CreateList関数のoptionパラメータに上記のAM_Option構造体を渡すことにより、メニューリソースに独自のカラーパレットを登録します。
必要条件
ヘッダファイル:
lib.h
AdvancedMenu.h
サンプル
// Table of the menu items for task #2 screen
static const AM_MenuItem Task2MenuTable[] = {
// itemID, y, x, menuText, Palette, visible, enabled, selectable, showControl, checked, font
{0, 0, 0, " Task #2 ", PX_TITLE_TASK, true, true, false, AM_NO_CONTROL, false, LARGE_FONT},
{0, 2, 1, "EAN/UPC code:", PX_BASE, true, true, false, AM_NO_CONTROL},
{TASK2_ID_BARCODE, AM_PIX(42), 1, (void *)&EditParamEAN, PX_EDIT, true, true, false, AM_TEXT_EDIT, false, LARGE_FONT},
{0, 5, 1, "Result:", PX_BASE, true, true, false, AM_NO_CONTROL},
{TASK2_ID_RESULT, 6, 2, "", PX_BASE, true, true, false, AM_NO_CONTROL},
{TASK2_ID_SCAN, AM_PIX(114), 0, "Read barcode", PX_GUIDE, true, true, false, AM_SCAN_ICON},
{TASK2_ID_EXIT, AM_PIX(129), 0, "Exit", PX_GUIDE, true, true, false, AM_CLEAR_ICON},
{TASK2_ID_CANCEL, AM_PIX(129), 0, "Cancel", PX_GUIDE, false, true, false, AM_CLEAR_ICON},
{TASK2_ID_APPLY, AM_PIX(129), AM_PIX(64), "Apply", PX_APPLY, false, true, false, AM_ENT_ICON},
{-1}
};
関連事項
最終更新日:2021/02/06