2008-11-05 8 views
0

Peut-être que je devrais encore nuancer - Yat-il un moyen de spécifier dans quelle direction un ComboBox s'ouvre sans copier et coller l'ensemble de la classe ComboBox et déchirant le code où il détermine dans quelle direction il s'ouvrira dans ...Flex - Existe-t-il un moyen de spécifier dans quelle direction un ComboBox va s'ouvrir?

Je suis mon cas spécifique - j'ai besoin d'ouvrir vers le haut - toujours.

MISE À JOUR: Vous ne pouvez pas résoudre ce problème en sous-classement parce que la fonction qui gère la direction de l'ouverture est:

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

Et ce mauvais garçon utilise une bonne quantité de variables privées que ma sous-classe wouldn » t ont accès à ...

Répondre

2

Si vous créez vous-même l'objet Menu, vous pouvez placer le menu où vous voulez en réglant simplement les coordonnées x, y de l'objet de menu. Vous aurez besoin de calculer ces coordonnées, mais vous pourriez être en mesure de le faire facilement sans sous-classement ComboBox. Je fais quelque chose de similaire avec PopUpButton; vous pourriez trouver plus facile de travailler avec PopUpButton. Ceci est basé sur le code réel de mon projet actuel:

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, pour obtenir le PopUpButton d'agir plus comme je le voulais (popup toujours, peu importe où le clic), réglage openAlways = true dans les travaux MXML comme un charme.

+0

Vous êtes l'homme - ce composant correspond effectivement à mes besoins beaucoup mieux. Je ne l'ai jamais utilisé! – onekidney

0

Je doute - vous auriez besoin de sous-classe le contrôle

Peut-être que vous pourriez jouer avec l'immobilier il est donc (ce qui est que grande affaire.) placé de telle manière (par exemple. entassés dans le coin inférieur droit) que vers le haut est naturellement contraint?

0

Je vous recommande de vérifier this post. Oui, vous devez saisir le code ComboBox et le modifier, mais au moins vous avez maintenant une idée où les modifications doivent aller.

0

Vous pouvez définir MaxDropDownHeight, si vous le définissez assez grand, Windows définira automatiquement la direction vers le haut.

0

Cela m'a irrité sans fin. J'ai téléchargé une solution, c'est une simple classe qui étend le PopUpButton et supprime la logique de la détection des limites d'étape car elle a échoué de toute façon 50% du temps. Mon code juste vous permet de spécifier simplement si vous voulez ouvrir le menu vers le haut ou vers le bas:

http://gist.github.com/505255

Questions connexes