компонент получает элементы из массива до того, как это потребуется - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть приложение, в котором пользователь вводит необходимую информацию в текстовые поля во всплывающем окне заголовка и отправляет данные, введенные в сетку данных. Это первый раз, когда я вызываю всплывающее окно и вводить информацию, она работает нормально. Вот проблема: в следующий раз, когда я вызываю компонент во всплывающем окне и щелкаю в любом месте всплывающего окна, включая textInputs, первый элемент массива автоматически вводится в textInput, где пользователь должен сам вводить данные (кстати, это textInput также является компонентом автозаполнения). То, что я хочу, - нечего вводить в текстовый ввод, пока пользователь не введет сами данные. Я настраивался с этим в течение многих часов, и я озадачен. Любые предложения будут высоко оценены.

Вот код: (это главная страница)

 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  creationComplete="init()" >

<mx:Script>
    <![CDATA[
        import mx.managers.PopUpManager;
            import mx.collections.ArrayCollection;
            import mx.core.IFlexDisplayObject;
            import com.AddTrade;

            [Bindable]public var dgItems:ArrayCollection = new ArrayCollection();

            private var addTradeScreen:AddTrade;



 private function init():void
 {
   addTradeScreen = new AddTrade();
   addTradeScreen.addEventListener("SaveTrade", saveTrade);
 }

 private function addTrade():void
 {
   PopUpManager.addPopUp(addTradeScreen, this, true);
   PopUpManager.centerPopUp(addTradeScreen);
   addTradeScreen.country.text = "";   
   addTradeScreen.Notes.text ="";
   addTradeScreen.myDate.text="";


 }

 private function saveTrade(e:Event):void
 {
   var trade:Trade= new Trade();
   trade.country = addTradeScreen.country.text;
   trade.myDate = addTradeScreen.myDate.text;
   trade.direction = addTradeScreen.combo.text;
   dgItems.addItem(trade);
   PopUpManager.removePopUp(addTradeScreen);
 }

    public function deleteItem(event:MouseEvent):void
                    {
                      dgItems.removeItemAt(myDG.selectedIndex);
                      dgItems.refresh();
                    }


    public function myColStyleFunc(data:Object,col:AdvancedDataGridColumn):Object
                {
                    if(data["myProfit"]<0)
                    {
                        return {color:0xFF0000};
                    }
                    else
                    {
                        return null;
                    }   
                }



        ]]>
    </mx:Script>

<mx:AdvancedDataGrid    x="10" y="10"  dataProvider="{dgItems}"  id="myDG" variableRowHeight="true" wordWrap="true" tabIndex="12" editable="false" height="429" width="942" doubleClickEnabled="true">
    <mx:columns>
        <mx:AdvancedDataGridColumn width="120" headerText="Country:" dataField="country"/>
        <mx:AdvancedDataGridColumn width="120" headerText="Date:" dataField="myDate"/>          
        <mx:AdvancedDataGridColumn width="160" headerText="Notes:" dataField="tradeNotes"/>
        <mx:AdvancedDataGridColumn width="129" headerText="Delete" >
            <mx:itemRenderer>
                <mx:Component id="deleteButton" >
            <mx:Image click="outerDocument.deleteItem(event)" buttonMode="true" source="@Embed(source='Assets/trash2.png')" scaleContent="false" verticalAlign="middle" horizontalAlign="center" width="30" height="30"/>
                </mx:Component>
            </mx:itemRenderer>
        </mx:AdvancedDataGridColumn>
    </mx:columns>
</mx:AdvancedDataGrid>
<mx:Button x="733" y="447" click="addTrade();" label="Add New Trade" height="36" width="219" fontSize="14"/>

Вот всплывающий код компонента:

                 <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
                    layout="absolute" width="422" height="294"
                    title="Log Ur Trade" showCloseButton="true" close="close(event)"
                    xmlns:comp="com.adobe.flex.extras.controls.*"   
                    initialize="data1 = new ArrayCollection(countries); 
            data2 = new ArrayCollection(countries);">


                   <mx:Metadata>
        [Event(name="SaveTrade")]
        </mx:Metadata>

        <mx:Script>
            <![CDATA[
                import mx.managers.PopUpManager;
                import mx.events.CloseEvent;
                import mx.events.FlexEvent;
                import mx.collections.ArrayCollection;



        [Bindable] private var data1: ArrayCollection;
        [Bindable] private var data2: ArrayCollection;



        [Bindable]          
        public var countries: Array = [
                                        {id: 0, name:"Monaco"},
                                        {id: 1, name:"Macau"},
                                        {id: 2, name:"Hong Kong"},
                                        {id: 3, name:"Singapore"},
                                        {id: 4, name:"Gibraltar"},
                                        {id: 5, name:"Vatican City"},
                                        {id: 6, name:"Malta"},
                                        {id: 7, name:"Bermuda"},
                                        {id: 8, name:"Maldives"},
                                        {id: 9, name:"Bahrain"},
                                        {id: 10, name:"Bangladesh"},
                                        {id: 11, name:"Channel Islands"},
                                        {id: 12, name:"Nauru"},
                                        {id: 13, name:"Taiwan"},
                                        {id: 14, name:"Barbados"},
                                        {id: 15, name:"Palestinian territories"},
                                        {id: 16, name:"Mauritius"},
                                        {id: 17, name:"Aruba"},
                                        {id: 18, name:"South Korea"},
                                        {id: 19, name:"San Marino"},
                                        {id: 20, name:"Puerto Rico"},
                                        {id: 21, name:"Tuvalu"},
                                        {id: 22, name:"Netherlands"},
                                        {id: 23, name:"Martinique"},
                                        {id: 24, name:"Comoros"},
                                        {id: 25, name:"Lebanon"},
                                        {id: 26, name:"Rwanda"},
                                        {id: 27, name:"Marshall Islands"},
                                        {id: 28, name:"Belgium"},
                                        {id: 29, name:"Japan"},
                                        {id: 30, name:"India"},
                                        {id: 31, name:"El Salvador"},
                                        {id: 32, name:"American Samoa"},
                                        {id: 33, name:"U.S. Virgin Islands"},
                                        {id: 34, name:"Sri Lanka"},
                                        {id: 35, name:"R union"},
                                        {id: 36, name:"Guam"},
                                        {id: 37, name:"Haiti"},
                                        {id: 38, name:"Saint Vincent and the Grenadines"},
                                        {id: 39, name:"Israel"},
                                        {id: 40, name:"Saint Lucia"},
                                        {id: 41, name:"Philippines"},
                                        {id: 42, name:"Burundi"},
                                        {id: 43, name:"Guadeloupe"},
                                        {id: 44, name:"Grenada"},
                                        {id: 45, name:"Trinidad and Tobago"},
                                        {id: 46, name:"Vietnam"},
                                        {id: 47, name:"United Kingdom"},
                                        {id: 48, name:"Jamaica"},
                                        {id: 49, name:"Germany"},
                                        {id: 50, name:"Netherlands Antilles"},
                                        {id: 51, name:"Liechtenstein"},
                                        {id: 52, name:"Pakistan"},
                                        {id: 53, name:"Italy"},
                                        {id: 54, name:"North Korea"},
                                        {id: 55, name:"Nepal"},
                                        {id: 56, name:"Antigua and Barbuda"},
                                        {id: 57, name:"Dominican Republic"},
                                        {id: 58, name:"Luxembourg"},
                                        {id: 59, name:"Seychelles"},
                                        {id: 60, name:"Switzerland"},
                                        {id: 61, name:"Northern Mariana Islands"},
                                        {id: 62, name:"Cayman Islands"},
                                        {id: 63, name:"Saint Kitts and Nevis"},
                                        {id: 64, name:"Sao Tome and Principe"},
                                        {id: 65, name:"Federated States of Micronesia"},
                                        {id: 66, name:"Kuwait"},
                                        {id: 67, name:"British Virgin Islands"},
                                        {id: 68, name:"Andorra"},
                                        {id: 69, name:"Nigeria"},
                                        {id: 70, name:"People's Republic of China"},
                                        {id: 71, name:"Tonga"},
                                        {id: 72, name:"Kiribati"},
                                        {id: 73, name:"The Gambia"},
                                        {id: 74, name:"Anguilla"},
                                        {id: 75, name:"Isle of Man"},
                                        {id: 76, name:"Czech Republic"},
                                        {id: 77, name:"Denmark"},
                                        {id: 78, name:"Cape Verde"},
                                        {id: 79, name:"Thailand"},
                                        {id: 80, name:"Moldova"},
                                        {id: 81, name:"Uganda"},
                                        {id: 82, name:"Poland"},
                                        {id: 83, name:"Indonesia"},
                                        {id: 84, name:"Guatemala"},
                                        {id: 85, name:"Tokelau"},
                                        {id: 86, name:"Portugal"},
                                        {id: 87, name:"Slovakia"},
                                        {id: 88, name:"France (Metropolitan)"},
                                        {id: 89, name:"Albania"},
                                        {id: 90, name:"Malawi"},
                                        {id: 91, name:"Hungary"},
                                        {id: 92, name:"Togo"},
                                        {id: 93, name:"Serbia"},
                                        {id: 94, name:"Dominica"},
                                        {id: 95, name:"Syria"},
                                        {id: 96, name:"Cuba"},
                                        {id: 97, name:"Armenia"},
                                        {id: 98, name:"Austria"},
                                        {id: 99, name:"Azerbaijan"},
                                        {id: 100, name:"Slovenia"},
                                        {id: 101, name:"Turkey"},
                                        {id: 102, name:"Ghana"},
                                        {id: 103, name:"Romania"},
                                        {id: 104, name:"Cyprus"},
                                        {id: 105, name:"Spain"},
                                        {id: 106, name:"Costa Rica"},
                                        {id: 107, name:"Greece"},
                                        {id: 108, name:"Croatia"},
                                        {id: 109, name:"Republic of Macedonia"},
                                        {id: 110, name:"Cambodia"},
                                        {id: 111, name:"Wallis and Futuna"},
                                        {id: 112, name:"Sierra Leone"},
                                        {id: 113, name:"Ukraine"},
                                        {id: 114, name:"Malaysia"},
                                        {id: 115, name:"Bosnia and Herzegovina"},
                                        {id: 116, name:"Cook Islands"},
                                        {id: 117, name:"Benin"},
                                        {id: 118, name:"Myanmar"},
                                        {id: 119, name:"Egypt"},
                                        {id: 120, name:"Qatar"},
                                        {id: 121, name:"Morocco"},
                                        {id: 122, name:"Ethiopia"},
                                        {id: 123, name:"Bulgaria"},
                                        {id: 124, name:"Iraq"},
                                        {id: 125, name:"Samoa"},
                                        {id: 126, name:"Brunei"},
                                        {id: 127, name:"Honduras"},
                                        {id: 128, name:"Georgia"},
                                        {id: 129, name:"French Polynesia"},
                                        {id: 130, name:"Jordan"},
                                        {id: 131, name:"East Timor"},
                                        {id: 132, name:"Tunisia"},
                                        {id: 133, name:"Turks and Caicos Islands"},
                                        {id: 134, name:"Swaziland"},
                                        {id: 135, name:"Uzbekistan"},
                                        {id: 136, name:"Senegal"},
                                        {id: 137, name:"Lesotho"},
                                        {id: 138, name:"Ireland"},
                                        {id: 139, name:"Kenya"},
                                        {id: 140, name:"te d'Ivoire"},
                                        {id: 141, name:"Mexico"},
                                        {id: 142, name:"United Arab Emirates"},
                                        {id: 143, name:"Lithuania"},
                                        {id: 144, name:"Burkina Faso"},
                                        {id: 145, name:"Belarus"},
                                        {id: 146, name:"Ecuador"},
                                        {id: 147, name:"Fiji"},
                                        {id: 148, name:"Bhutan"},
                                        {id: 149, name:"Afghanistan"},
                                        {id: 150, name:"Tajikistan"},
                                        {id: 151, name:"Montenegro"},
                                        {id: 152, name:"Montserrat"},
                                        {id: 153, name:"Guinea-Bissau"},
                                        {id: 154, name:"Palau"},
                                        {id: 155, name:"Panama"},
                                        {id: 156, name:"Nicaragua"},
                                        {id: 157, name:"Iran"},
                                        {id: 158, name:"Tanzania"},
                                        {id: 159, name:"Saint Helena"},
                                        {id: 160, name:"Colombia"},
                                        {id: 161, name:"Yemen"},
                                        {id: 162, name:"South Africa"},
                                        {id: 163, name:"Guinea"},
                                        {id: 164, name:"Eritrea"},
                                        {id: 165, name:"Latvia"},
                                        {id: 166, name:"Cameroon"},
                                        {id: 167, name:"Djibouti"},
                                        {id: 168, name:"Faroe Islands"},
                                        {id: 169, name:"Zimbabwe"},
                                        {id: 170, name:"Madagascar"},
                                        {id: 171, name:"United States"},
                                        {id: 172, name:"Estonia"},
                                        {id: 173, name:"Liberia"},
                                        {id: 174, name:"Venezuela"},
                                        {id: 175, name:"Kyrgyzstan"},
                                        {id: 176, name:"Laos"},
                                        {id: 177, name:"Mozambique"},
                                        {id: 178, name:"Democratic Republic of the Congo"},
                                        {id: 179, name:"Saint-Pierre and Miquelon"},
                                        {id: 180, name:"The Bahamas"},
                                        {id: 181, name:"Brazil"},
                                        {id: 182, name:"Peru"},
                                        {id: 183, name:"Chile"},
                                        {id: 184, name:"Sweden"},
                                        {id: 185, name:"Uruguay"},
                                        {id: 186, name:"Equatorial Guinea"},
                                        {id: 187, name:"Vanuatu"},
                                        {id: 188, name:"Solomon Islands"},
                                        {id: 189, name:"Finland"},
                                        {id: 190, name:"Zambia"},
                                        {id: 191, name:"Paraguay"},
                                        {id: 192, name:"New Zealand"},
                                        {id: 193, name:"Sudan"},
                                        {id: 194, name:"Argentina"},
                                        {id: 195, name:"Algeria"},
                                        {id: 196, name:"Pitcairn Islands"},
                                        {id: 197, name:"Somalia"},
                                        {id: 198, name:"Angola"},
                                        {id: 199, name:"New Caledonia"},
                                        {id: 200, name:"Papua New Guinea"},
                                        {id: 201, name:"Norway"},
                                        {id: 202, name:"Belize"},
                                        {id: 203, name:"Republic of the Congo"},
                                        {id: 204, name:"Saudi Arabia"},
                                        {id: 205, name:"Niger"},
                                        {id: 206, name:"Mali"},
                                        {id: 207, name:"Turkmenistan"},
                                        {id: 208, name:"Russia"},
                                        {id: 209, name:"Bolivia"},
                                        {id: 210, name:"Oman"},
                                        {id: 211, name:"Chad"},
                                        {id: 212, name:"Central African Republic"},
                                        {id: 213, name:"Niue"},
                                        {id: 214, name:"Kazakhstan"},
                                        {id: 215, name:"Gabon"},
                                        {id: 216, name:"Guyana"},
                                        {id: 217, name:"Libya"},
                                        {id: 218, name:"Canada"},
                                        {id: 219, name:"Botswana"},
                                        {id: 220, name:"Mauritania"},
                                        {id: 221, name:"Iceland"},
                                        {id: 222, name:"Suriname"},
                                        {id: 223, name:"Australia"},
                                        {id: 224, name:"Namibia"},
                                        {id: 225, name:"French Guiana"},
                                        {id: 226, name:"Mongolia"},
                                        {id: 227, name:"Western Sahara"},
                                        {id: 228, name:"Falkland Islands"},
                                        {id: 229, name:"Greenland"}
            ];


        private function save():void
            {
                this.dispatchEvent(new Event("SaveTrade"));
            }

        private function close(evt:CloseEvent):void
            {
                PopUpManager.removePopUp(this);
            }
            ]]>
        </mx:Script>


    <mx:Button x="197" y="203" label="Submit" width="114" id="submitTrade" click="save()"  tabIndex="11"/>                  
    <mx:TextArea x="12" y="118" height="107" id="Notes" tabIndex="10" fontStyle="normal"/>
        <mx:Label x="10" y="97" text="Notes:" fontWeight="bold" height="18" fontFamily="Georgia" fontSize="12"/>
            <mx:DateField x="83" y="40" width="89" height="20" id="myDate" tabIndex="2"/>
                <mx:Label x="10" y="42" text="Date:" fontWeight="bold" height="20" width="87" fontFamily="Georgia"/>
     <comp:AutoCompleteModified  
                width="80"
                dataProvider="{data2}" 
                 labelField="name" 
                x="83" y="68" height="21" id="country" tabIndexChange="2" tabIndex="3"/>
            <mx:Label x="10" y="70" text="Instrument:" width="75" fontWeight="bold" fontFamily="Georgia"/>
    <mx:ComboBox id = "combo"  x="83" y="10" width="89" rowCount="2" tabIndex="1">
         <mx:ArrayCollection>
                <mx:String>Long</mx:String>
                <mx:String>Short</mx:String>
         </mx:ArrayCollection>
    </mx:ComboBox>
            <mx:Label x="10" y="12" text="Direction:" width="65" fontWeight="bold" fontFamily="Georgia"/>

Наконец, код для компонента автозаполнения (AutocompleteModified):

<code>package com.adobe.flex.extras.controls
{
  import flash.events.Event;
  import flash.events.FocusEvent;
  import flash.events.KeyboardEvent;
  import flash.net.SharedObject;
  import flash.ui.Keyboard;

  import mx.collections.ListCollectionView;
 import mx.controls.ComboBox;
 import mx.core.UIComponent;

 [Event(name="typedTextChange", type="flash.events.Event")]


 public class AutoCompleteModified extends ComboBox 
  {


public function AutoCompleteModified()
{
    super();

    //Make ComboBox look like a normal text field
    editable = true;
    if(keepLocalHistory)
        addEventListener("focusOut",focusOutHandler);

    setStyle("arrowButtonWidth",0);
    setStyle("fontWeight","normal");
    setStyle("cornerRadius",0);
    setStyle("paddingLeft",0);
    setStyle("paddingRight",0);
    rowCount = 7;
}


private var cursorPosition:Number=0;


private var prevIndex:Number = -1;


private var removeHighlight:Boolean = false;    


private var showDropdown:Boolean=false;


private var showingDropdown:Boolean=false;


private var tempCollection:Object;


private var usingLocalHistory:Boolean=false;


private var dropdownClosed:Boolean=true;


//----------------------------------
//  editable
//----------------------------------
/**
 *  @private
 */
override public function set editable(value:Boolean):void
{
    //This is done to prevent user from resetting the value to false
    super.editable = true;
}
/**
 *  @private
 */
override public function set dataProvider(value:Object):void
{
    super.dataProvider = value;
    if(!usingLocalHistory)
        tempCollection = value;
}

//----------------------------------
//  labelField
//----------------------------------
/**
 *  @private
 */
override public function set labelField(value:String):void
{
    super.labelField = value;

    invalidateProperties();
    invalidateDisplayList();
}


//--------------------------------------------------------------------------
//
//  Properties
//
//--------------------------------------------------------------------------


//----------------------------------
//  filterFunction
//----------------------------------

/**
 *  @private
 *  Storage for the filterFunction property.
 */
private var _filterFunction:Function = defaultFilterFunction;

/**
 *  @private
 */
private var filterFunctionChanged:Boolean = true;

[Bindable("filterFunctionChange")]
[Inspectable(category="General")]

/**
 *  A function that is used to select items that match the
 *  function's criteria. 
 *  A filterFunction is expected to have the following signature:
 *
 *  <pre>f(item:~~, text:String):Boolean
* * где возвращаемое значение true, если указанный элемент * должен отображаться как предложение. * При изменении текста в элементе управления автозаполнения это * filterFunction запускается для каждого элемента в dataProvider. * *

Реализация по умолчанию для filterFunction работает следующим образом:
* Если был напечатан «AB», он отобразит все элементы, соответствующие * "AB ~~" (ABaa, ABcc, abAc и т. Д.).

* *

Пример использования настраиваемой функции filterFunction - при вводе текста * является регулярным выражением, и мы хотим отобразить все * предметы, которые входят в комплект.

* * @пример *
 *  public function myFilterFunction(item:~~, text:String):Boolean
 *  {
 *     public var regExp:RegExp = new RegExp(text,"");
 *     return regExp.test(item);
 *  }
 *  
* * / public function get filterFunction (): Функция { return _filterFunction; } / ** * @частный * / public function set filterFunction (значение: Функция): пусто { // Пустая filterFunction разрешена, но не пустая filterFunction если (значение! = NULL) { _filterFunction = значение; filterFunctionChanged = true; invalidateProperties (); invalidateDisplayList (); dispatchEvent (new Event ("filterFunctionChange")); } еще _filterFunction = defaultFilterFunction; } // ---------------------------------- // filterFunction // ---------------------------------- / ** * @частный * Хранение для свойства keepLocalHistory. * / private var _keepLocalHistory: Boolean = false; / ** * @частный * / частная переменная keepLocalHistoryChanged: Boolean = true; [Bindable ( "keepLocalHistoryChange")] [Осматриваемом (категория = "Общий")] / ** * Когда true, это заставляет элемент управления отслеживать * записи, которые вводятся в элемент управления и сохраняет * история как локальный общий объект. Когда это правда, * завершение-функция и dataProvider игнорируются. * * @default "false" * / публичная функция get keepLocalHistory (): логическое значение { return _keepLocalHistory; } / ** * @частный * / открытый набор функций keepLocalHistory (значение: Boolean): void { _keepLocalHistory = значение; } // ---------------------------------- // смотреть вперед // ---------------------------------- / ** * @частный * Хранение для свойства lookAhead. * / private var _lookAhead: Boolean = false; / ** * @частный * / частный var lookAheadChanged: Boolean; [Bindable ( "lookAheadChange")] [Осматриваемом (категория = "Данные")] / ** * lookAhead решает, нужно ли автоматически завершать текст в текстовом поле * с первым пунктом в выпадающем списке или нет. * * @default "false" * / публичная функция get lookAhead (): Boolean { return _lookAhead; } / ** * @частный * / набор публичных функций { _lookAhead = значение; lookAheadChanged = true; } // ---------------------------------- // typedText // ---------------------------------- / ** * @частный * Хранение для свойства typedText. * / private var _typedText: String = ""; / ** * @частный * / приватная переменная typedTextChanged: Boolean; [Bindable ( "typedTextChange")] [Осматриваемом (категория = "Данные")] / ** * Строка для отслеживания текста изменена как* результат взаимодействия с пользователем. * / публичная функция get typedText (): String { return _typedText; } / ** * @частный * / открытый набор функций typedText (input: String): void { _typedText = input; typedTextChanged = true; invalidateProperties (); invalidateDisplayList (); dispatchEvent (new Event ("typedTextChange")); } переопределить защищенную функцию commitProperties (): void { super.commitProperties (); если (! выпадающий) SelectedIndex = -1; если (раскрывающийся) { если (typedTextChanged) { cursorPosition = textInput.selectionBeginIndex; updateDataProvider (); // Если нет предложений, нет необходимости показывать выпадающий список if (collection.length == 0 || typedText == "" || typedText == null) { dropdownClosed = TRUE; showDropdown = ложь; } еще { showDropdown = true; selectedIndex = 0; } } } } переопределить защищенную функцию focusOutHandler (событие: FocusEvent): пусто { super.focusOutHandler (событие) if (keepLocalHistory && dataProvider.length == 0) addToLocalHistory (); } переопределить открытую функцию getStyle (styleProp: String): * { if (styleProp! = "openDuration") return super.getStyle (styleProp); еще { если (dropdownClosed) return super.getStyle (styleProp); еще вернуть 0; } } переопределить защищенную функцию keyDownHandler (событие: KeyboardEvent): пусто { super.keyDownHandler (событие); если (! event.ctrlKey) { // UP "keydown" событие на самом верхнем элементе в раскрывающемся списке // или событие ESCAPE "keydown" должно изменить текст в тексте // поле к исходному тексту if (event.keyCode == Keyboard.UP && prevIndex == 0) { textInput.text = _typedText; textInput.setSelection (textInput.text.length, textInput.text.length); selectedIndex = -1; } иначе if (event.keyCode == Keyboard.ESCAPE && ShowingDropdown) { textInput.text = _typedText; textInput.setSelection (textInput.text.length, textInput.text.length); показываяDropdown = false; dropdownClosed = TRUE; } еще если (event.keyCode == Keyboard.ENTER) { if (keepLocalHistory && dataProvider.length == 0) addToLocalHistory (); / * textInput.text = selectedLabel; textInput.setSelection (cursorPosition, textInput.text.length); textInput.setSelection (textInput.text.length, _typedText.length); * / } еще если (lookAhead && event.keyCode == Keyboard.BACKSPACE || event.keyCode == Keyboard.DELETE) removeHighlight = true; } еще if (event.ctrlKey && event.keyCode == Keyboard.UP) dropdownClosed = TRUE; prevIndex = selectedIndex; } измерение защищенной функции (): void { super.measure (); measureWidth = mx.core.UIComponent.DEFAULT_MEASURED_WIDTH; } переопределить защищенную функцию updateDisplayList (unscaledWidth: Number, unscaledHeight: Number): недействительный { super.updateDisplayList (unscaledWidth, unscaledHeight); // UP "keydown" событие на самом верхнем элементе в выпадении // вниз список изменяет текст в текстовом поле на "" if (selectedIndex == -1) textInput.text = typedText; если (раскрывающийся) { если (typedTextChanged) { // Это необходимо, потому что вызов super.updateDisplayList () устанавливает текст // в textInput to "" и, таким образом, значение // набирается пользователем losts if (lookAhead && showDropdown && typedText! = "" &&! removeHighlight) { var label: String = itemToLabel (collection [0]); var index: Number = label.toLowerCase (). indexOf (_typedText.toLowerCase ());если (индекс == 0) { textInput.text = _typedText + label.substr (_typedText.length); textInput.setSelection (textInput.text.length, _typedText.length); } еще { textInput.text = _typedText; textInput.setSelection (cursorPosition, cursorPosition); removeHighlight = false; } } еще { textInput.text = _typedText; textInput.setSelection (cursorPosition, cursorPosition); removeHighlight = false; } typedTextChanged = false; } еще, если (typedText) textInput.setSelection (_typedText.length, textInput.text.length); } if (showDropdown &&! dropdown.visible) { super.open (); showDropdown = false; показываяDropdown = true; если (dropdownClosed) dropdownClosed = ложь; } } переопределить защищенную функцию textInput_changeHandler (событие: событие): пусто { super.textInput_changeHandler (событие); // Сохраняет текст, введенный пользователем в переменную typedText = текст; } приватная функция addToLocalHistory (): void { if (id! = null && id! = "" && text! = null && text! = "") { var so: SharedObject = SharedObject.getLocal ("AutoCompleteData"); var saveData: Array = so.data.suggestions; // Пока не было создано ни одного общего объекта если (сохраненные данные == ноль) saveData = new Array (); var i: Number = 0; флаг var: Boolean = false; // Проверяем, есть ли эта запись в ранее сохраненных данных общего объекта для (я = 0; я

}

}

1 Ответ

1 голос
/ 08 сентября 2010

Это, вероятно, результат механизма ComboBox, который устанавливает его свойство selectedIndex в 0 после каждого изменения dataProvider.Вы должны установить его обратно в -1 где-то в вашем коде (как, возможно, в обработчике creationComplete вашего всплывающего окна).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...