在长文本下拉项的组合框中添加水平滚动条
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;
}
我试过使用 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;
}