これってコンポーネントのバグなんじゃないの??

良くある、DateFieldコンポーネントの日付設定。

グリッドを選択した時にその行の内容やら日付やらを表示する処理を作った。
たいていはこんな感じでsplitで元のDBのフォームをバラして

_val=col.rp_date.split(“-”);

こんな感じで最設定する
_date.selectedDate=new Date(_val[0]+”/”+_val[1]+”/”+_val[2]);

しかし、ちゃんと設定される時とされない時(日付が変更されない)場合がある。

されない時と言うのは、その前にDateFieldを開いて何処かの日付を選択した後。

原因が分からずに暫くネットでそれらしい話を探したが情報がない。

あれこれやってみて偶然だが、日付を選択した後に、他のコンポーネントを触って同様の処理をやったらちゃんと設定された!

つまりDateFieldへフォーカスがある間は、プログラムでselectedDateを行なっても設定されない様なのだが、グリッドをクリックする段階で既に自身からフォーカスがグリッドへ移っているはずなのだが、そうはならない様だ。

もしかすると、グリッドのデータ選択のイベントで処理している間はFocusの移動は後回しにされている可能性がある。

この辺がシングルタスクの悲しいところだ。

そこで、試しにDateFieldの_changeHandlerイベントで、次の項目へ強制的にsetFocus()してみたら、ちゃんと設定されるようになった(-_-)

う~ん。。でも、なんかこれってコンポーネントのバグなんじゃないの??

カテゴリー: Flash Builder, 仕事   パーマリンク

コメントは受け付けていません。