2010-10-29 20 views
1

J'ai écrit un itemrenderer personnalisé pour un composant List (Flex 3.5) qui est une VBox avec un Label et un TextArea enveloppé à l'intérieur. Tout fonctionne bien jusqu'ici mais je veux que le TextArea dans le premier itemrenderer reçoive le focus pour qu'il soit instantanément éditable quand on le tabule sur la liste. Est-ce possible et si j'y arriverais?Définition du focus sur une liste ItemRenderer avec TextArea à l'intérieur?

je l'ai déjà ajouté un écouteur d'événement qui sélectionne l'élément à l'index 0 mais le textArea en elle devrait également être concentré à ce moment ...

_list.addEventListener(FocusEvent.FOCUS_IN, onListFocusIn); 

private function onListFocusIn(e:FocusEvent):void 
{ 
_list.selectedIndex = 0; 
} 

Répondre

1

Il n'y a pas grand-chose d'un événement pour cette. Une façon de le faire carriole est de passer outre updateDisplayList pour votre itemRenderer

<mx:Script> 
    <![CDATA[ 
     import mx.controls.listClasses.ListBase; 
     import mx.managers.FocusManager; 

     override protected function updateDisplayList(unscaledWidth:Number, 
                 unscaledHeight:Number):void{ 
      super.updateDisplayList(unscaledWidth, unscaledHeight); 

      if(ListBase(owner).isItemSelected(data)){ 
       focusManager.setFocus(mytext); 
      } 
     } 
    ]]> 
</mx:Script> 

Plus de détails sur http://butterfliesandbugs.wordpress.com/2007/06/25/how-to-know-when-my-itemrenderer-is-selected/

Et

http://cookbooks.adobe.com/post_How_to_know_when_an_ItemRenderer_is_selected-5322.html

+0

Merci Faheem! Cette astuce fait bien le travail! – BadmintonCat

+1

Existe-t-il un meilleur moyen de faire cela avec des composants d'étincelles dans Flex 4? – Randalfien