キー入力データを格納するバッファとキー入力を制御するための情報を表します。

構文

typedef struct _AM_EditParam{
  int MaxDigits;
  int CursorForeColor;
  int CursorBackColor;
  int ShiftModeForeColor;
  int ShiftModeBackColor;
  int EditOption;
  pAM_ShiftCandidateTable alphaCandidateTable;
  char *Value;
  int ValueBufSize;
} AM_EditParam, *pAM_EditParam;

メンバー

MaxDigits
最大桁数:
 入力フィールドに入力可能な最大桁数を指定します。
CursorForeColor
カーソル文字色:
 入力フィールドでカーソルを点灯させるとき、カーソルを表示する場所の元のピクセルが文字色ならばカーソル文字色に書き換えます。
 入力フィールドでカーソルを消灯させるときは、逆にカーソル文字色を元の文字色に書き換えます。
CursorBackColor
カーソル背景色:
 入力フィールドでカーソルが点灯させるとき、カーソルを表示する場所の元のピクセルが背景色ならばカーソル背景色に書き換えます。
 入力フィールドでカーソルを消灯させるときは、逆にカーソル背景色を元の背景色に書き換えます。

(注意)

 カーソル文字色とカーソル背景色に同じ色を設定してはいけません。
ShiftModeForeColor
未確定文字の文字色:
 英字シフトモードまたはHEXシフトモードのとき入力フィールドに表示する未確定状態の文字の文字色を指定します。
ShiftModeBackColor
未確定文字の背景色:
 英字シフトモードまたはHEXシフトモードのとき入力フィールドに表示する未確定状態の文字の背景色を指定します。
EditOption
編集オプション:
 編集モードの動作を指定する各種オプションを次のフラグ値の論理和で指定します。
説明
AM_EDIT_ALLOW_HEX 非数値フィールドのとき、[SHIFT]キーでHEXモードに遷移する。
AM_EDIT_CLEAR_ON_FIRST_CHAR 最初の入力でテキストバッファをクリアする。
AM_EDIT_DISABLE_TEXT_EDIT 入力・編集操作を無効にします。このフィールドはフォーカスを持っていても入力・編集のキー操作を受け付けません。入力操作を有効にするにはAM_EnableTextEdit関数を使用します。
(Ver. 1.6.1以降)
AM_EDIT_DISALLOW_ALPHA 非数値フィールドのとき、[SHIFT]キーで英小文字モードに遷移しない。
AM_EDIT_DISALLOW_ALPHA_CAPS 非数値フィールドのとき、[SHIFT]キーで英大文字モードに遷移しない。
AM_EDIT_MOVE_CURSOR_BY_Q1Q2 AM_EDIT_RIGHTとAM_EDIT_NUMERICが設定されていないときは、[Q1]、 [Q2]キーを押すと、入力フィールド内でカーソルが左右に移動します。
また、AM_EDIT_RIGHTとAM_EDIT_NUMERICとは関係なく、[Q1]、 [Q2]キーを押したとき別のフィールドにフォーカスは移動しません。
AM_EDIT_NO_CURSOR カーソル表示なし。
AM_EDIT_NO_PERIOD 非数値フィールドのとき、ピリオド入力を無視する。(数値フィールドでは、ピリオドは常に無視される。)
AM_EDIT_NUMERIC 数値フィールド。([SHIFT]キーが無視されます。)
AM_EDIT_NUMERIC_RIGHT 右詰め、数値フィールド、カーソルなし。
(AM_EDIT_RIGHT|AM_EDIT_NUMERIC|
AM_EDIT_NO_CURSOR)
AM_EDIT_PASSWORD * を表示する。(非数値フィールドのときのみ有効).
AM_EDIT_RIGHT 右詰め。(AM_EDIT_NUMERICのときのみ有効)
AM_EDIT_SET_ALPHA 初期シフトモードを英小文字モードにする.
AM_EDIT_SET_ALPHA_CAPS 初期シフトモードを英大文字モードにする.
AM_EDIT_SET_HEX 初期シフトモードをHEXモードにする.
AM_EDIT_SET_NUMERIC 初期シフトモードを数字モードにする.
AM_EDIT_UNDERLINE アンダーラインを表示する。
AM_EDIT_USE_CLEAR [CLEAR]キーを押したときテキストをクリアします。

alphaCandidateTable
候補文字テーブル:
 AM_ShiftCandidateTable構造体を指定して、英字モードの入力で表示される候補文字を変更できます。
 デフォルトの候補文字を変更せずに使用する場合はNULLを設定します
Value
入力バッファ:
 キー入力データを格納するバッファを指すポインタ。
ValueBufSize
入力バッファサイズ:
 キー入力データを格納するバッファのサイズ。

解説

 文字入力を行うためのメニューアイテムを定義するには、AM_MenuItem構造体showControlAM_TEXT_EDITを指定し、 menuTextには本項のAM_EditParam構造体を指すポインタを設定します。
 入力データはNULで終端する文字列で入力バッファに格納されます。そのため、Valueに設定する入力バッファのサイズ(=ValueBufSize)はMaxDigits + 1 以上でなくてはなりません。

サンプル
static char nameBuf[8+1] = {""};

static const AM_EditParam EditParamName = {
    8,                  // MaxDigits
    RGB_WHITE,          // Cursor foregraund Color
    RGB_BLUE,           // Cursor backgraund Color
    RGB_WHITE,          // Shift mode foregraund Color
    RGB_BLUE,           // Shift mode backgraund Color
    AM_EDIT_SET_ALPHA | AM_EDIT_MOVE_CURSOR_BY_Q1Q2, // EditOption
    NULL,               // alphaCandidateTable
    nameBuf,            // Value
    sizeof(nameBuf)     // ValueBufSize
};

static const AM_MenuItem menu_EditName[] = {
  //id, y,x,   menuText,                ColorIdx, visible, enabled, selectable, showControl
  { 1,  2,1,   (void *)&EditParamName,  1,        true,    true,    true,       AM_TEXT_EDIT },
  { 0,  5,1,   "",                      0,        true,    true,    false,      AM_SHIFT_MODE },
  { 0,  5,7,   "",                      0,        true,    true,    false,      AM_SHIFT_CANDIDATE },
  { -1 }
};


 複数行の入力フィールドを連結して1個の入力フィールドとして構成するには、行数分のAM_EditParam構造体を定義し、 それぞれの構造体でその行に表示する文字数を指定して、それら文字数の合計が入力フィールドの最大桁数に一致するようにします。 2行目以降の構造体ではMaxDigits以外のメンバーは参照されないので、それらを設定する必要はありません。
 このようにして定義したAM_EditParam構造体を、各行のAM_MenuItem構造体itemOptionとともに指定します。
サンプル: main.c
static char SsidBuf[32+1] = {""};

static const AM_EditParam EditParamSsid1 = {
    20,                 // MaxDigits
    RGB_YELLOW+1,       // Cursor foregraund Color
    RGB_YELLOW,         // Cursor backgraund Color
    RGB_BLACK,          // Shift mode foregraund Color
    RGB_YELLOW,         // Shift mode backgraund Color
    AM_EDIT_MOVE_CURSOR_BY_Q1Q2 | AM_EDIT_SET_NUMERIC, // EditOption
    NULL,               // alphaCandidateTable
    SsidBuf,            // Value
    sizeof(SsidBuf)     // ValueBufSize
};

static const AM_EditParam EditParamSsid2 = {
    12                  // MaxDigits
};

static const AM_MenuItem menu_WlanEditSsid[] = {
  //id, y,x,   menuText,                ColorIdx, visible, enabled, selectable, showControl,    checked, font, itemOption
  { 1,  2,1,   (void *)&EditParamSsid1, 1,        true,    true,    true,       AM_TEXT_EDIT,   false,   0,    AM_MULTI_START },
  { 0,  3,1,   (void *)&EditParamSsid2, 1,        true,    true,    true,       AM_TEXT_EDIT,   false,   0,    AM_MULTI_END },
  { 0,  5,1,   "",                      0,        true,    true,    false,      AM_SHIFT_MODE },
  { 0,  5,7,   "",                      0,        true,    true,    false,      AM_SHIFT_CANDIDATE },
  { -1 }
};

必要条件

ヘッダファイル:
lib.h
AdvancedMenu.h

関連事項

最終更新日:2021/07/03