Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

27jan/084

Flex States: Modifier la propriété d'un composant

En utilisant le tag <mx:SetProperty>, vous pouvez modifier la valeur d'une propriété d'un composant existant dans cet état. Par exemple, vous pouvez modifier le texte d'un Label, basculer la propriété "enabled" d'un champ de saisie, changer les coordonnées X et Y d'un conteneur, ou même appliquer un filtre (un flou/blur par exemple). Le tag <mx:SetProperty> requiert 3 attributs:

  • "target": référence vers l'objet auquel vous voulez appliquer la modification de propriété
  • "name": nom de la propriété à modifier (enabled, x, text ...)
  • "value": spécifie la valeur à appliquer à la propriété à modifier


L'exemple suivant utilise deux boutons pour basculer entre deux états qui activent/désactivent un champ de saisie:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="horizontal"
    verticalAlign="middle"
	 viewSourceURL="srcview/index.html">
	<mx:states>
		<mx:State name="enabled">
			<mx:SetProperty target="{textinput}" name="enabled" value="{true}"/>
		</mx:State>
	</mx:states>
	<mx:HBox id="hbox">
		<mx:Button id="enableButton" label="Activer" click="currentState='enabled'" />
		<mx:Button id="disableButton" label="Désactiver" click="currentState=null" />
		<mx:TextInput id="textinput" enabled="false" text="Texte de démo"/>
	</mx:HBox>
</mx:Application>

Flex Source Code Download: Télécharger le code source complet de l'application

This movie requires Flash Player 11

Remplis sous: States || Taggé comme: , , Laisser un commentaire

Articles similaires

Commentaires (4) Trackbacks (0)
  1. bonjour,
    j'ai un créé un composant qui contient un bouton, lors de l'event click sur le bouton un appel serveur s'effectue au retour de cet appel je souhaite que la fonction de retour modifie la currentState.
    mais je ne parviens pas à modifier cet état.
    je ne suis peut être pas au bon endroit pour ma question et je m'en excuse par avance si c'est le cas :)

  2. Salut,
    comme c'est indiqué dans cet article:
    http://www.flex-tutorial.fr/2008/01/27/flex-states-creation-et-application-etats-simples/
    il te suffit de modifier la propriété currentState de ton composant. Donc en ActionScript dans ta fonction de retour d'appel serveur, tu peux faire currentState='nameDuNouveauState'.

    Fabien

  3. (déterrement de post) Merci fnicollet mais ce n'est pas le problème, j'ai le même problème que aliong, son bouton se trouve dans un composant personnalisé et il veut modifier l'état du composant principal, si on le fait comme toi, cela génère cette erreur:

    ArgumentError: Undefined state 'st_site'.
    at mx.core::UIComponent/getState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10596]
    at mx.core::UIComponent/findCommonBaseState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10616]
    at mx.core::UIComponent/commitCurrentState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10370]
    at mx.core::UIComponent/setCurrentState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10312]
    at mx.core::UIComponent/set currentState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:6415]
    at components::tw_login/__b_connexion_click()[C:\Users\XXXXXXXX\Dropbox\XXX\XXXXX\XXXXX\XXXXXXXX\Espace de travail\cabinet_de_massage\src\components\tw_login.mxml:24]

    Si quelqu'un qui passerait par la aurais une idée, elle serait la bienvenue... :)
    Merci!

  4. Salut,
    as-tu déclaré l'état "st_site" dans ton composant cible? On dirait que non :)

    Fab


Leave a comment

(required)

Aucun trackbacks pour l'instant