Flex - 有没有办法指定ComboBox将打开的方向?

时间:2008-11-05 18:22:04

标签: flex actionscript-3 combobox

也许我应该进一步限定这个 - 有没有办法指定ComboBox将打开哪个方向而不复制和粘贴整个ComboBox类并删除代码,它确定它将在哪个方向打开...

我是我的具体案例 - 我需要它向上打开 - 永远。

更新:你不能通过继承它来解决这个问题,因为处理开口方向的函数是:

private function displayDropdown(show:Boolean, trigger:Event = null):void

那个坏男孩使用了相当数量的私有变量,我的子类无法访问...

5 个答案:

答案 0 :(得分:2)

如果您自己构建Menu对象,只需设置菜单对象的x,y坐标,即可将菜单放在任意位置。您需要计算这些坐标,但您可以轻松地完成此操作而无需继承ComboBox。

我正在做与PopUpButton类似的事情;您可能会发现使用PopUpButton更容易。这是基于我当前项目的实际代码:

private function initMenu(): void {
    var m:Menu = new Menu();
    m.dataProvider = theMenuData;
    m.addEventListener(MenuEvent.ITEM_CLICK, menuClick);
    m.showRoot = false;
    // m.x = ... <-- probably don't need to tweak this.
    // m.y = ... <-- this is really the interesting one :-)
    theMenu.popUp = m;
}
<mx:PopUpButton id="theMenu" creationComplete="initMenu()" ... />
顺便说一句,为了让PopUpButton更像我想要的行为(总是弹出,无论点击的位置),在MXML中设置openAlways = true就像魅力一样。

答案 1 :(得分:0)

我对此表示怀疑 - 你需要对控件进行子类化(这不是 大不了的事。)

也许你可以搞乱这个房地产,所以它被置于这样一种方式(例如挤在右下角),这种情况自然是强迫的?

答案 2 :(得分:0)

我建议您查看this post。是的,你必须抓住ComboBox代码并对其进行修改,但至少现在你知道修改需要去哪里了。

答案 3 :(得分:0)

你可以设置MaxDropDownHeight,如果你设置得足够大,Windows会自动向上设置方向。

答案 4 :(得分:0)

这让我感到恼火。我上传了一个解决方案,它是一个简单的类,它扩展了PopUpButton并删除了阶段边界检测的逻辑,因为它无论如何都失败了50%。我的代码只允许您简单地指定是否要打开或关闭菜单:

http://gist.github.com/505255