RecordGridのセルフォーカスをEnterキーで移動する

RecordGridのセルフォーカスをEnterキーで移動するにはRecordGridCellのカスタマイズが必要です。

以下のサンプルソースをご覧ください。

 

{curl 6.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}

{define-class public EnterKeyCell {inherits StandardStringCell}

  {constructor public {default}
    {construct-super}
  }

  {method public {create-editor}:TextField
    let editor:TextField = {super.create-editor}

    ||セル上で操作するテキストフィールドに対して、
    ||Enterキーのイベントを追加する。
   
{editor.add-event-handler
        {on e:KeyPress at tf:TextField do
            {if e.value == KeyPressValue.enter
             then
                {self.grid.ui.traverse forward? = not e.shift?}
                   
            }
        }
    }

    {return editor}
   
  }
}

{let people:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField “First”, domain = String},
            {RecordField “Last”, domain = String},
            {RecordField “Age”, domain = int}
        },
        {RecordData First = “John”, Last = “Smith”, Age = 25},
        {RecordData First = “Jane”, Last = “Smith”, Age = 29},
        {RecordData First = “Jane”, Last = “Jones”, Age = 28}
    }
}
{value
    {RecordGrid
        record-source = people,
        height = 3cm,
        cell-spec = EnterKeyCell
    }
}

 このサンプルを実行すると、以下のような実行結果が得られます。

サンプルでEnterキーを押下すると、グリッド上のセルフォーカスが移動します。

 enter.jpg