Flex - Есть ли способ указать, в каком направлении откроется ComboBox? - PullRequest
0 голосов
/ 05 ноября 2008

Может быть, мне следует уточнить это - есть ли способ указать, в каком направлении будет открываться ComboBox, без копирования и вставки всего класса ComboBox и извлечения кода, где он определяет, в каком направлении он будет открываться ...

Я - мой конкретный случай - мне нужно, чтобы он открывался вверх - всегда.

ОБНОВЛЕНИЕ: Вы не можете исправить это, создав подклассы, потому что функция, которая обрабатывает направление открытия:

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

И этот плохой парень использует достаточное количество личных переменных, к которым у моего подкласса не будет доступа ...

Ответы [ 5 ]

2 голосов
/ 06 ноября 2008

Если вы создаете объект 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 работать так, как я хотел (всегда всплывающее, независимо от места нажатия), установка openAlways = true в MXML работает как шарм.

0 голосов
/ 03 августа 2010

Это раздражало меня без конца. Я загрузил решение, это простой класс, который расширяет PopUpButton и удаляет логику обнаружения границ этапов, так как в любом случае это не удалось в 50% случаев. Мой код просто позволяет вам просто указать, хотите ли вы открыть меню вверх или вниз:

http://gist.github.com/505255

0 голосов
/ 26 мая 2009

Вы можете установить MaxDropDownHeight, если вы установите его достаточно большим, Windows автоматически установит направление вверх.

0 голосов
/ 05 ноября 2008

Я бы порекомендовал проверить этот пост . Да, вам нужно захватить код ComboBox и изменить его, но, по крайней мере, теперь у вас есть идея, куда нужно перейти.

0 голосов
/ 05 ноября 2008

Я сомневаюсь в этом - вам нужно было бы создать подкласс управления (который не , что большое дело).

Может быть, вы могли бы возиться с недвижимостью, чтобы она размещалась таким образом (например, теснится в правом нижнем углу), что естественным образом принуждается?

...