flexのDataGridで縦と横のスクロールバーがあるか調べる。

しかしながら、標準のメソッドではこの方法が見つからないので・・・
以下のmx_internalなメソッドを使って調べる。

 mx_internal::scroll_verticalScrollBar;
 mx_internal::scroll_horizontalScrollBar;

どうやら、スクロールバーがあるかどうかは、
1)nullが返ってきたとき。
2)visible=falseだったとき。

のようである。

このメソッド(getter)はScrollControlBaseのメソッドなのでかなりの広範囲で使えるだろう。
ただし、あくまでもmx_internalなメソッドなので使用の際にはそのことをお忘れなく。。。。

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
    creationComplete="init()"
    updateComplete="update()"
    >
    <mx:Script>
        <![CDATA[
            import mx.core.ScrollPolicy;
            import mx.controls.scrollClasses.ScrollBar;
            import mx.collections.ArrayCollection;
            
            private function init():void{
                // データを作成する
                var src:Array = new Array();
                for(var i:int = 0; i<30; i++){
                    var obj:Object = new Object();
                    obj.label = "ラベル" + i;
                    obj.idx = i;
                    src.push(obj);
                }
                dg.dataProvider = new ArrayCollection(src);
            }
            
            private function update():void{
                var vs:ScrollBar = dg.mx_internal::scroll_verticalScrollBar;
                var hs:ScrollBar = dg.mx_internal::scroll_horizontalScrollBar;
                if(vs){
                    if(vs.visible){
                        vlog.text =" Found !! " + vs.width;
                    }
                    else{
                        vlog.text = "Found !! But not visible";
                    }
                    
                }
                else{
                    vlog.text = "*NOT* found ...";
                }
                if(hs){
                    if(hs.visible){
                        hlog.text = "Found !!" + hs.height;
                    }
                    else{
                        hlog.text =" Found !! But not visible";
                    }
                }
                else{
                    hlog.text = "*NOT* found ...";
                }
            }
            private function changeHBar():void{
                if(hbar.selected){
                    dg.horizontalScrollPolicy = ScrollPolicy.ON;
                }
                else{
                    dg.horizontalScrollPolicy = ScrollPolicy.OFF;
                }
                    
            }
        ]]>
    </mx:Script>
    <mx:VBox width="100%" height="100%">
    <mx:DataGrid width="100%" height="90%" id="dg">
        <mx:columns>
            <mx:DataGridColumn headerText="LABEL" dataField="label" minWidth="150"/>
            <mx:DataGridColumn headerText="INDEX" dataField="idx" minWidth="150"/>
        </mx:columns>
    </mx:DataGrid>
    <mx:CheckBox id="hbar" change="changeHBar()"/>
    <mx:HBox>
        <mx:Label text="VerticalScrollBar" />
        <mx:Label id="vlog" />
    </mx:HBox>
    <mx:HBox>
        <mx:Label text="HorizontalScrollBar" />
        <mx:Label id="hlog" />
    </mx:HBox>
    </mx:VBox>
</mx:Application>
お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2009年12月
« 11月   1月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ