2008-11-05 94 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

相關問題