SparkのDataGridの横スクロール2
Flex SDK4.6
sparkのDataGridの横スクロールのイベントを拾いたい場合は、
dataGrid.scroller.horizontalScrollBar.addEventListener(Event.CHANGE, onDataGridHorisontalScrollChange)
で、イベントが取得できます。
protected function onDataGridHorisontalScrollChange(event:Event):void { trace(dataGrid.grid.horizontalScrollPosition); }
で、その時の、Positionが取れます。
ただ、説明しにくいのですが、
・ItemEditorを使用。
・そのItemEditorがGridの端のほうにある。
・そのItemEditorの編集セッションがスタートする。
すると、DataGridが、編集対象のItemEditorを全て表示する為、勝手にスクロールしてくれます。
この時、horizontalScrollBar(HScrollBar)のCHANGEイベントは、発生しません。
DataGridやらGridやら、DataGridEditorやらのソースを見ると、
GridのscrollToIndexで行なっているようです。
Scrollerがイベントを送出してくれません。
対応したのがコチラ。
dataGrid.grid.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onGridPropertyChange);
PropertyChangeEventをハンドリングします。
protected function onGridPropertyChange(event:PropertyChangeEvent):void { if (event.property=="horizontalScrollPosition") { trace(event.newValue); } }
GroupBase - Adobe ActionScript® 3(AS3 Flex)API リファレンス
他のPropertyのChangeイベントも拾ってしまうので、
なるべくPropertyChangeEvent使いたくないんですけどね。
ちょっと他に方法が思いつきませんでした。
まぁ、BindableなPropertyそんなに多くはなさそうなので。