RecordGridにてrecord選択時にKeyPressイベントを発生させるには

【ご質問】
Record選択時にEnterキーを押下しても、Actionイベントが発生せず、
editable?=trueのカラム上が選択範囲のときのみKeyPressイベントが発生するようでした。
画面初期表示時に、RecordGridにKeyPressイベントが発生するように
フォーカスを当てたいのですが、どのようしたら実現できるでしょうか?

【回答】
RecordGridにイベントを追加するのではなく、
SkinnableRecordGridUIクラスにKeyPressイベントを追加することで、
RecordGridにKeyPressイベントが発生させることが可能です。

また、editable?=falseのセルでもイベントが発生するようにするためには
カスタムセルを作成し、セルが持つTextFieldにKeyPressイベントを追加します。

詳細はサンプルをご参照ください。

{curl 7.0,8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}
{applet
    {compiler-directives careful? = true}
}

{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 do
            {if e.value == KeyPressValue.enter then
                {popup-message “EnterKey Press Event 拾いました。”}
                {e.consume}
            }
        }
    }
    {return editor}
  }
}

{let rs-choice-grid:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField
                “choice”, caption = “選択”, domain = bool
            },
            {RecordField
                “service”, caption = “サービス”, domain = String
            }
        },
        {RecordData choice = false, service = “良いサービス”},
        {RecordData choice = false, service = “普通サービス”},
        {RecordData choice = false, service = “悪いサービス”}
    }
}

{let rg:RecordGrid =
    {RecordGrid
        width = 264pt,
        height = 192pt,
        name = “sample”,
        automatic-columns? = false,
        column-selection-enabled? = false,
        record-selection-enabled? = true,
        select-current-record? = true,
        record-source = rs-choice-grid,
        {RecordGridColumn  width = 0.8cm, “choice”},
        {RecordGridColumn  width = 3.2cm, “service”, editable? = false, cell-spec = EnterKeyCell},
        ui-object = {SkinnableRecordGridUI                                       
                        {on e:KeyPress do
                            {if e.value == KeyPressValue.enter then
                                {popup-message “EnterKey Press Event 拾いました。”}
                                {e.consume}
                            }
                        }
                    }
    }
}

{Dialog rg}

{do
    {rg.request-key-focus}
}