2008-11-05 93 views
0

也许我应该进一步验证这一点 - 有没有指定哪个方向的ComboBox就没有打开复制和粘贴整个ComboBox类,抽空了它决定哪个方向将打开代码的方式...Flex - 有没有办法指定ComboBox打开的方向?

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

更新:您无法通过继承它,因为它处理的开口方向的功能是解决这个问题:

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

这坏小子使用私有变量相当数量的其子类我止跌”吨有访问...

回答

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()" ... /> 

BTW,拿到检测PopUpButton采取更喜欢我想它(总是弹出,无论身在何处点击),设置openAlways = true在MXML作品像一个魅力。

+0

你是男人 - 该组件实际上是适合我的需求,好了很多。我从来没有用过它! – onekidney 2008-11-07 21:55:52

0

我对此表示怀疑 - 你需要继承控制

也许你可以乱用地产所以它的(这是不是大不了的事。)以这种方式放置(例如。挤在右下角),自然被强制?

0

我会推荐检查this post。是的,您必须获取ComboBox代码并对其进行修改,但至少现在您已经了解需要进行修改的位置。

0

您可以设置MaxDropDownHeight,如果将其设置得足够大,Windows将自动向上设置方向。

0

这激怒了我没有结束。我已经上传了一个解决方案,它是一个简单的类,它扩展了PopUpButton并删除了阶段边界检测的逻辑,因为它无论如何都失败了50%。我的代码只是让您只需指定你是否要打开菜单向上或向下:

http://gist.github.com/505255

相关问题