画面に表示する各メニューアイテムの表示内容や制御方法を指定します。このAM_MenuItem構造体の配列で一画面分のメニュー表示を定義します。

構文

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のときは、enabledselectableshowControlの値によらずこのメニューアイテムは表示されません。
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_BMPFILEmenuTextで指定されたファイル名の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 を指定できます。

 キーボードで文字入力を行う入力フィールドを定義するには、showControlAM_TEXT_EDITを指定し、menuTextAM_EditParam構造体を指すポインタを設定します。

 画像を表示するには、showControlAM_BMPFILEを指定し、menuTextにBMPファイルのファイル名を指すポインタを設定します。

 メニューアイテムの表示色を指定するにはカラーパレットを使用します。
 カラーパレットの実体は、AM_ColorPalette構造体の配列であり、その配列のインデックス値をpaletteIndexに指定することにより色を指定します。
 次の手順であらかじめ独自のカラーパレットをメニューリソースに登録しておきます。
  1. AM_ColorPalette構造体の配列で、必要な種類のカラーパレットを定義します。
  2. AM_Option構造体を定義し、NumberOfColorPaletteメンバとColorPalettesメンバで上記のAM_ColorPalette構造体の配列を登録しておきます。
  3. 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