2009-11-27 3 views
0

J'ai un composant personnalisé avec textbox & un bouton POUP commeflex REGAIN perdu le focus

<mx:HBox> 
    <mx:Text id="source" height="100%" width="40%" data="my text" /> 
    <mx:VBox backgroundAlpha="0" height="100%" borderThickness="0"> 
     <mx:PopUpButton enabled="true" id="editButton" width="40" icon="@Embed('assets/images/Legends/editIcon.png')" 
      initialize="popUpButton_initialize()" 
      popUp="{actionMenuEdit}" 
      height="19" toolTip="Edit at segment"/> 
    </mx:VBox> 
</mx:HBox> 

J'utilise ce composant personnalisé comme itemEditor pour le DataGrid

J'ai un problème avec mise au point. J'ai besoin de mettre l'accent sur le texte après pop-up buttton itemclick Le scénario est que je suis en train de taper du texte dans le texte source. Si je vais au bouton contextuel et que je clique sur n'importe quel élément, le focus se déplace sur le bouton contextuel et je suis incapable de taper le texte lorsque le focus est perdu.

Je dois redéfinir le focus sur le code source après la sélection de l'élément du bouton contextuel pour pouvoir continuer à taper. Pour l'instant, je dois cliquer sur le gain dans le texte, puis je suis en mesure de taper.

Répondre

0
source.setFocus() 
+0

Merci Amarghosh mais J'ai essayé mais ne fonctionne pas. Si je donne de l'espace alors je suis en mesure de voir le bouton contextuel en surbrillance et si je fais Ctrl + Flèche vers le bas, le menu contextuel s'ouvre. Il semble que l'accent est toujours sur popupbutton. – gauravFlex

+0

où appelez-vous 'source.setFocus()'? Faites-le à partir du gestionnaire d'événement de fermeture du bouton contextuel – Amarghosh

0

Vous devrez ajouter un gestionnaire pour l'événement de modification du bouton contextuel qui définit le focus sur votre zone de texte.

Ce sera quelque chose comme ceci:

this.focusManager.setFocus(source); 

ou dans votre exemple:

<mx:HBox> 
    <mx:Text id="source" height="100%" width="40%" data="my text" /> 
    <mx:VBox backgroundAlpha="0" height="100%" borderThickness="0"> 
     <mx:PopUpButton enabled="true" id="editButton" width="40" icon="@Embed('assets/images/Legends/editIcon.png')" 
       initialize="popUpButton_initialize()" 
       popUp="{actionMenuEdit}" 
       change="{this.focusManager.setFocus(source)}" 
       height="19" toolTip="Edit at segment"/> 
    </mx:VBox> 
</mx:HBox> 
+0

L'événement change peut ne pas convenir à un bouton contextuel, mais il fonctionnerait pour une zone de liste déroulante. Vous devrez peut-être modifier l'événement qui déclenche le setFocus pour répondre à vos besoins. – robmcm

0

peut b cette aide u

if (flexApplication != "undefined") flexApplication.focus(); 
Questions connexes