Enterキーでのフォーカス遷移 - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: Enterキーでのフォーカス遷移 (/showthread.php?tid=168) |
Enterキーでのフォーカス遷移 - umemura - 07-28-2011 テキストフィールドなどのコントロールは通常タブキーでフォーカス遷移しますが、 このフォーカス遷移をEnterキーで行うことはできないでしょうか。 RE: Enterキーでのフォーカス遷移 - umemura - 07-28-2011 Enterキーが押されたイベントは、UIオブジェクトのKeyPressイベントで取得できるので、 この中でTabキーのイベントに変換して流してやればいけそうです。 下記のコードはレコードグリッドのカスタムセルのサンプルです。 cell-spec に設定すると、グリッド内のセルがエンターキーで遷移します。 Code: {define-class public EnterMoveCell {inherits StandardStringCell} ちなみに、キープレスのイベントをenuqueue-event で発生させていますが、 handle-event だと、NullDereferenceExceptionが出てしまいます。 理由は分かりません。 RE: Enterキーでのフォーカス遷移 - c-s - 07-29-2011 (07-28-2011, 05:13 PM)umemura Wrote: ちなみに、キープレスのイベントをenuqueue-event で発生させていますが、 handle-eventを使えば、直接フォーカスが変わって、 Enterの残っているハンドリングがおかしくなります。 上の書いている方法は少し危険です、下の様に、イベントの流れがあれば。 [queue] enter -> 'a' ユーザーは(移動)、('a'の入力)を期待しているでしょう。 ですが、enqueueすれば、こうなります。 [queue] enter -> 'a' -> tab 'a'が最初セルに入ってしまいます。 安全方法には、OpenControlsを使って、 SkinnableRecordGridUI.on-key-press-aux と SkinnedSRGTextFieldFeel.on-key-press を書き換えるしかないかもしれません。 そこまでしなくてもいい可能性があるけど、他の設定によるんでしょう。 残念ですが今の時点ではちょっと困難なところです。 |