2009年12月16日

vruby / tabキーによるフォーカス移動について

さて、今回の記事は厳密には2009年10月11日の以下の記事の続きになります。

>Rubyの勉強13(さいころ改良編2)少し脱線

このとき、tabキーを使って入力エリアをフォーカス移動させられないか試して失敗しました。
VREditを使うと移動のたびに警告音が鳴り、VRTextでは音は出ないもののテキストエリアにも通常のテキスト入力と同様tabの空白が入力されてしまいました。

それからしばらくして、tk様から解決策のコメントをいただきました!
こちらで作ったt_moveメソッドに、SKIP_DEFAULTHANDLERを組み込んで見事に問題を解決してくださったんです。

tk様、ありがとうございました。
以下に改良していただいたメソッドを示します。

─────────────
  def t_move(keycode)
ret = nil
if keycode == 9
ret = SKIP_DEFAULTHANDLER
@tab_c += 1 ; @tab_c = 0 if @tab_c == 3
case @tab_c
when 0
@mes_text0.focus
when 1
@mes_text1.focus
when 2
@mes_text2.focus
end
end
ret
end

─────────────

確かに警告音が止まりました。
VRTextでも試してみたところ、こちらでの問題点も解決されました。完璧です。

ただSKIP_DEFAULTHANDLERが具体的にどういうものか、正確には調べつくせませんでした。
手元の書籍(恋するプログラム / 毎日コミュニケーションズ / 著者 秋山智俊)にたった一行書かれていた説明によりますと、
デフォルトのハンドラが呼びだれないようにすることができるようではあります。
詳しい方が見ておられましたらご教授ください。

そんな自分も書いてみました(間違いの可能性大)のがこちら(ヲイ

─────────────
  def t_move(keycode)
if keycode == 9
@tab_c += 1 ; @tab_c = 0 if @tab_c == 3
case @tab_c
when 0
@mes_edit0.focus
when 1
@mes_edit1.focus
when 2
@mes_edit2.focus
end
SKIP_DEFAULTHANDLER
end
end

─────────────

これも一応おなじ結果が得られました。

今回もどこか間違ってたら暖かいツッコミをお願いいたします。


人気ブログランキングに参加してます。
ポチッ!としてくださると嬉しいです。
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村

それにしても「恋するプログラム」なんでこんなにプレミアが付いてしまったんでしょう……


posted by Hol_nice at 20:56| Comment(0) | TrackBack(0) | プログラム | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック