7月 132012
 
症状
  1. EditableなDataGridを用意する
  2. あるセルのテキストを選択状態にする
  3. グリッドをスクロールする(マウスホイールが分かりやすい)
  4. 関係のないセルにテキスト選択の黒枠が残る
原因

このバグ↓っぽい
[#SDK-11236] If you select text in a DataGrid and then scroll down, various rows in the new views have the same text selections – Adobe Bug System

指摘されているバージョンはFlex3のベータ版。
これはFlashPlayerのバグで、回避コードを書くことは可能だが、Flexでは対処を保留すると書かれている気がする。。

対処方法

とりあえずDataGridのfocusOutイベントで、セルに対してsetSelection(0, 0)とする事で対処できる。
もっといい方法やタイミングもあるかも。

public function DataGrid():void{
    super();
    addEventListener(FocusEvent.FOCUS_OUT, onFocusOutEnd, false, -10);
}

private function onFocusOutEnd(event:Event):void{
    if(event.target is TextField){
        //バブリングで処理。itemFocusOutでもいいかも。
        TextField(event.target).setSelection(0,0);
    }
} 

7月 132012
 

選択を解除するとselectedItemが-1になってしまう。
通常、editableでないComboBoxでは、明示的に指定しない限りselectedItemが-1になる事はない。

[#SDK-9402] [customer] Ctrl + Click the selected item returns selectionIndex=-1 for ComboBox – Adobe Bug System

バグではないらしい。
ヘルプのComboBoxのユーザ操作には載ってない動作なのだけど…
Listクラス依存の動作なので、他のList系コントロールでも同様の動作をするはず。

Listクラスを継承し、selectItemメソッドをoverrideしてCtrlキーを無視するように変更したListクラスを作成。
ComboBoxのdropdownFactoryに使用するListクラスを作成したListクラスに変更すれば解決する。

7月 132012
 

環境:Flex2.0.1(どうやらFlex3.0でも変わってなさそう?)

このメモ以降にも色々調べたりAdobeとやりとりしたはずだが、よく覚えてない…
FlashPlayer10との絡みもあったはず。

FlexのTextInputはimeModeプロパティを指定した時変な動きをする。

以下のように入力項目が並んでいるとする。

  • 入力①:IME制御なし
  • 入力②:ひらがな
  • 入力③:IME制御なし

①にフォーカスがある状態で、IMEがONかつひらがな入力の場合、
①→②→③とフォーカスを移動すると③の時点でIMEがOFFになってしまう。
ちなみにIMEはOFFにされるが、変換モード(全角カタカナ、半角英数など)は①の状態を記憶しておき、③に移る時に元に戻している。

③では、②で変更されたモードをそのまま引き継ぐのが通常の動作のように感じる。
個人的には①のモードを記憶しておいて、戻ってくれたほうが使い勝手がいいと思うのだけど。。
Continue reading »

7月 132012
 
  • タイトルの長さとボタンの幅で決まる。
  • 継承でどうにかする事もできそうにない。
  • タイトルの末尾にスペースを付加して調整する事は可能。
7月 132012
 

欧米仕様の為か、0が省略される

  • 0.1→.1
  • 1.1→1.1
  • 0.01→.01

0に相当する文字列を渡した場合フォーマットされない

  • 00.01→.01
  • 00.00→00.00
  • 001→1
  • 000→000

useThousandsSeparatorがfalseの場合、整数部はフォーマットされない
※precision=”2″の場合

  • 01234→01234.00
  • 002.5→002.50