问题描述
2014年6月25日,报表项目增加树形控件,显示列的时候,设置横滚动条为auto的时候不予以显示。
问题原因
这是由于Adobe出于性能的考虑,没有计算maxHorizontalScrollPosition的值。
解决方案
百度找到的解决方案如下,-->原文链接<--!
从原始Tree继承出新的类AutoSizeTree,然后在Application直接调用即可,类源码如下:
package { import flash.events.Event; import mx.core.ScrollPolicy; import mx.core.mx_internal; import twaver.DataBox; import twaver.controls.Tree; public class AutoSizeTree extends Tree { public function AutoSizeTree(dataBox:DataBox=null) { super(dataBox); horizontalScrollPolicy = ScrollPolicy.AUTO; } override public function get maxHorizontalScrollPosition():Number { if (isNaN(mx_internal::_maxHorizontalScrollPosition)) return 0; return mx_internal::_maxHorizontalScrollPosition; } override public function set maxHorizontalScrollPosition(value:Number):void { mx_internal::_maxHorizontalScrollPosition = value; dispatchEvent(new Event("maxHorizontalScrollPositionChanged")); scrollAreaChanged = true; invalidateDisplayList(); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { var diffWidth:Number = measureWidthOfItems(0,0) - (unscaledWidth - viewMetrics.left - viewMetrics.right); if (diffWidth <= 0) maxHorizontalScrollPosition = NaN; else maxHorizontalScrollPosition = diffWidth; super.updateDisplayList(unscaledWidth, unscaledHeight); } } }