2010-01-23 4 views
0

J'ai un HGroup qui contient un DataGroup avec un ArrayCollection pour un fournisseur de données.Flash Builder (flex): VScrollbar pour un DataGroup, comment faire défiler vers le bas par défaut?

Le DataGroup est associé à un VScrollBar. Comment puis-je m'assurer que lorsque de nouvelles lignes sont ajoutées à ArrayCollection, le groupe de données défile vers le bas?

cette fenêtre va être utilisée pour une application de discussion, donc quand de nouvelles lignes sont ajoutées, j'ai besoin de voir les nouvelles lignes.

je sais que je peux exécuter la commande suivante pour faire défiler vers le bas: chatScrollBar.value = chatScrollbar.maximum

mais quel événement dois-je attacher afin d'exécuter cette commande chaque fois qu'une nouvelle ligne est visible?

<s:HGroup width="100%"> 
<s:DataGroup id="vertView" 
    clipAndEnableScrolling="true" width="100%" height="60" 
    dataProvider="{chatMessages}"> 

    <s:itemRenderer> 
    <fx:Component> 
    <s:ItemRenderer width="100%" height="8"> 
    <s:states> 
     <s:State name="normal" /> 
     <s:State name="hovered" /> 
    </s:states> 

    <s:RichText text="{ data }" textAlign="left" paddingLeft="2" color="black" color.hovered="blue"/> 
    </s:ItemRenderer> 
    </fx:Component> 
    </s:itemRenderer> 

    <s:layout> 
    <s:VerticalLayout useVirtualLayout="true"/> 
    </s:layout> 
</s:DataGroup> 
<s:VScrollBar id="chatScrollBar" viewport="{vertView}" 
     height="{vertView.height}" /> 

</s:HGroup> 

Répondre

1

Vous devez définir verticalScrollPosition. Voir here ou here. Ou essayez ceci pour une liste Spark:

<s:List id="list" 
      horizontalCenter="0" 
      verticalCenter="0"> 
     <s:layout> 
      <s:VerticalLayout id="vLayout" requestedRowCount="4" 
        verticalScrollPosition="{vLayout.maxScrollPosition}" /> 
     </s:layout> 
</s:list> 
+0

Malheureusement, valueCommit n'est pas exécuté à chaque fois que j'ajoute une ligne, J'ai essayé d'utiliser s: Liste au lieu de s: DataGroup mais j'ai obtenu les mêmes résultats – ufk

+0

Essayez l'exemple que j'ai ajouté. – Thomas

+0

VerticalLayout n'a pas maxScrollPosition – ufk

1

Essayez d'utiliser Scroller, je pense qu'il est aussi simple que:

<s:Scroller > 
    <s:HGroup> 
    ... 
    </s:HGroup> 
</s:Scroller> 

Vous ne devriez pas besoin de brancher votre propre barre de défilement.

Questions connexes