01-23-2013, 12:40 PM
Dialog.controls でループさせ、対象のコントロールに、
キーフォーカスがあるかどうかを確かめたいですのですが、
いくつか問題があります。
■has-key-focus? が想定する値を返却しない
TextField の場合:
キーフォーカスを持っている(カレットが点滅している)状態にもかかわらず、
TextField.has-key-focus? は false となっている。
ただし、TextField.ui-object を (TextFieldUI にキャストする必要あり)
TextFieldUI.has-key-focus? を参照すると true が取得できる。
これは少し奇妙に思えます。
なぜ コントロール自体の has-key-focus? がui-object の値と異なるのでしょうか。
■ControlUI に、 has-key-focus? のgetter がない
上記の問題と絡みますが、ControlUI に、 has-key-focus? のgetter がないため、
キーフォーカスの有無を確認するコントロールの型によって、
個別のUIクラスに ui-object をキャストする必要があり、
共通的なコードを書くことがでない。
あるコントロールにキーボードフォーカスがあるかどうかを調べる簡単な方法があれば教えてください。