在长文本下拉项的组合框中添加水平滚动条

add a Horizontal Scrollbar in a comboBox for the long text dropdown items

我试过使用 dropdownWidth 属性,但它将是静态的。但是如果数据又太长,我就无法在下拉列表中看到全文。

所以我的要求是width根据下拉项文本的长宽设置水平滚动条。

由于 flex 不支持水平滚动,我覆盖了 Combobox class

<mx:FormItem id="zoneformitem" label="{Localizer.getString('zone','i18n')}" paddingLeft="60" paddingTop="15" required="true">
<mx:ComboBox id="selectedzone" open="campaigns.view.utils.CustomiZeCombo"
selectedIndex="-1" 
dropdownWidth="210" width="209" change="validateZoneSelection()" 
focusOut="validateZoneSelection()"
 dataProvider="{slotProxy.slotWizardVo.currentZones.source.
sortOn('zoneName')}" >
<mx:itemRenderer>
<mx:Component>


    public class CustomiZeCombo extends ComboBox{
    public function CustomiZeCombo(){
        super();
    }
    override public function open():void { 
        dropdown.horizontalScrollPolicy = ScrollPolicy.ON; 
        super.open(); 
    } 

override protected function 
       downArrowButton_buttonDownHandler(event:FlexEvent):void { 
        dropdown.horizontalScrollPolicy = ScrollPolicy.ON; 
        super.downArrowButton_buttonDownHandler(event); 
        } 
    }

但我不知道如何调用该事件以使其正常工作。 非常感谢建议。

尝试使用 Combobox 的 click() 事件调用以下方法。

 private function setWidthForLongdata():void {
        var width:int;
        width = selectedzone.width;
        var maxWidth:int;
        maxWidth = width + (width/2);

        for each (var zone:ZoneVO in slotProxy.slotWizardVo.currentZones.source) {
        if(zone.zoneName.length > maxLen ) {
        maxLen = zone.zoneName.length;
        }
        }

        if(maxLen*13 > width) {
        width = maxLen*13;

        if(width>maxWidth) {
        width = maxWidth;
        }
        }
        selectedzone.dropdown.width=width;
        }