代码之家  ›  专栏  ›  技术社区  ›  Pieter van Niekerk

柔性扩展组合框

  •  3
  • Pieter van Niekerk  · 技术社区  · 15 年前

    我创建了一个类 CustomCombo.as 延伸 ComboBox . 现在发生的是 CustomCombo editable false

    我还试着设置组合框的 textInput.editable 控制到 ,但无济于事。

    自定义组合.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
            }
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Pieter van Niekerk    15 年前

    在浏览了flex4api之后,我发现他们建议使用 DropDownList 控制。据我所知,他们把 editable ComboBox 控件,但我可能错了。

    下拉框 这就解决了我的问题。

        2
  •  1
  •   Amarghosh    15 年前

    我看到你用的是spark而不是mx。这个 editable ComboBox 延伸 DropDownListBase 默认情况下可编辑。

    这个 ComboBox 控件是 下拉列表基 下拉列表基 组合框 控件的提示区域中出现数据项。

    控件之间的一个区别是 TextInput 控制,而不是 Label DropDownList 控制。因此,用户可以编辑控件的提示区域以输入不是预定义选项之一的值。

    下拉框 控件仅允许用户从控件中的预定义项列表中进行选择。这个 组合框

    这个 组合框 控件还会在用户向提示区域输入字符时搜索项目列表。当用户输入字符时,控件的下拉区域打开。然后滚动到并突出显示项目列表中最接近的匹配项。

    所以理想情况下,你应该使用 在这种情况下。

    尝试访问时出现空错误 textInput 因为它还没有被创建。在基于mx的控件(Flex-3)中,您可以从 creationComplete 经办人;我不太清楚如何为基于火花的控制。

    DropDownBox 相反)。你必须覆盖 partAdded 方法。

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

    但有一个问题:在这种情况下可能行不通。这个 source code of ComboBox.as

    API忽略了视觉效果 可编辑 selectable 属性

    所以呢 下拉框


    初始答案,为mx发布

    这不应该作为 editable 财产是 false .

    从构造器那里。

    public function CustomCombo() {
      super();
      this.editable = false;
    }
    
    推荐文章