簡體   English   中英

Flex擴展ComboBox

[英]Flex extending ComboBox

我創建了一個擴展ComboBox的類CustomCombo.as 發生的事情是CustomCombo組合框顯示為可編輯。 我不想要這個,我無法找到將editable設置為false的屬性。

我也嘗試將組合框的textInput.editable控件設置為false ,但無濟於事。

任何幫助將不勝感激。

CustomCombo.as

package custom {

    import spark.components.ComboBox;

    public class CustomCombo extends ComboBox {

        public function CustomCombo() {
            super();
//          this.editable = false; //<-- THIS DOESNT WORK   ***Access of possibly undefined property editable through a reference with static type custom:CustomCombo
//          this.textInput.editable = false; //<-- THIS DOESNT WORK   ***Cannot access a property or method of a null object reference
        }
    }
}

通過Flex 4 API翻找后,我發現他們建議使用DropDownList控件。 從我可以看到他們從Flex 4中的ComboBox控件中刪除了editable屬性,但我可能錯了。

我實現了DropDownList ,這解決了我的問題。

我看到你使用的是火花而不是mx。 我引用的editable屬性僅適用於基於mx的列表。 在spark中, ComboBox擴展了DropDownListBase ,默認情況下是可編輯的。

ComboBox控件是DropDownListBase控件的子類。 DropDownListBase控件一樣,當用戶從ComboBox控件的下拉列表中選擇項時,數據項將顯示在控件的提示區域中。

控件之間的一個區別是ComboBox控件的提示區域是使用TextInput控件實現的,而不是DropDownList控件的Label控件。 因此,用戶可以編輯控件的提示區域以輸入不是預定義選項之一的值。

例如, DropDownList控件僅允許用戶從控件中的預定義項列表中進行選擇。 ComboBox控件允許用戶選擇預定義項目,或在提示區域中輸入新項目。 您的應用程序可以識別已輸入新項目,並可選擇將其添加到控件中的項目列表中。

當用戶在提示區域中輸入字符時, ComboBox控件還會搜索項目列表。 當用戶輸入字符時,控件的下拉區域將打開。 然后滾動並突出顯示項目列表中最接近的匹配項。

理想情況下,在這種情況下你應該使用DropDownList

嘗試從構造函數訪問textInput時,您會收到null錯誤,因為它尚未創建。 在基於mx的控件(Flex-3)中,您可以從creationComplete處理程序訪問它; 我不太清楚如何做基於火花的控制。

更新:我想我已經想出如何訪問spark中的皮膚部分(盡管你可能想要使用DropDownBox )。 您必須覆蓋partAdded方法。

override protected function partAdded(partName:String, instance:Object):void
{
    super.partAdded(partName, instance);
    if (instance == textInput)
    {
        textInput.editable = false;
    }
}

雖然有一個問題:在這種情況下它可能不起作用。 ComboBox.as源代碼說明了這一點

API忽略可視的editableselectable屬性

所以它是DropDownList


初步回答,發布於mx ComboBox

這不應該發生,因為editable屬性的默認值為false

嘗試從構造函數顯式將值設置為false

public function CustomCombo() {
  super();
  this.editable = false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM