2009-03-03 64 views
0

我有一个可编辑的ComboBox组件,我想引用显示的TextInput,以编程方式选择其中的文本。这是一个TextInput非常简单:如何引用可编辑组合框的TextInput?

private function selectNameText():void 
{ 
    nameTextInput.selectionBeginIndex = 0; 

    nameTextInput.selectionEndIndex = nameTextInput.text.length; 
} 

但我无法找到任何方式来访问一个可编辑的ComboBox控件的TextInput。

回答

1

看起来,引用TextInput的这个原因是不必要的,因为文本是默认选中的。

0

当使用ComboBox作为DataGrid的itemRenderer时,我遇到了这个问题。如果您需要引用TextInput,则可以覆盖ComboBox并创建一个返回受保护textInput的getter。在我的情况下,我需要防止ComboBox可编辑时发生的自动选择。综观组合框,此期间发生的updateDisplayList所以这应该做的伎俩:

package com.whatever.controls 
{ 

import mx.controls.ComboBox; 

public class EditableComboBox extends ComboBox 
{ 

    public function EditableComboBox() 
    { 
     super(); 
    } 

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 

     if (editable) 
     { 
      textInput.selectionBeginIndex = text.length; 
      textInput.selectionEndIndex  = text.length; 
     } 
    } 

} 
} 
0

在组合框的“创建完成”事件,你可以得到直接的组件:

private function creationCompleteEvt (evt:FlexEvent) : void 
{ 
    var targTextInput:UITextInput = UITextInput(myComboBox.getChildAt(2)); 
    targTextInput.setSelection(0, targTextInput.selectionEndIndex); 
}